我正在尝试按与每个板 block 关联的帖子数量来排序此查询集。
这是董事会模型:
class Board(models.Model):
name = models.CharField(max_length=140)
def num_posts(self):
return self.post_set.all().count()
这是帖子模型:
class Post(models.Model):
title = models.CharField(max_length=140)
content = models.TextField()
location = models.ForeignKey(Board)
这是我试图获取所有图板的 View ,按每个图板的帖子数量排序:
def index(request):
board_list = Board.objects.order_by('num_posts')
context = RequestContext(request, {
'board_list':board_list
})
return render(request,'index.html',context)
而且它不起作用。我收到此错误:
Cannot resolve keyword 'num_posts' into field.
最佳答案
无法按方法排序 - 这无法很好地转换为 SQL 查询。
您可以执行以下操作:
from django.db.models import Count
board_list = Board.objects.annotate(num_posts=Count('post')).order_by('num_posts')
关于python - Django - 按方法排序查询集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20872946/