我正在尝试按照与每个主板相关联的帖子数量来订购此查询集。
以下是董事会模式:
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)
以下是我试图获取所有电路板的视图,按照每个电路板上的帖子数排序:
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.
答案 0 :(得分:3)
无法按方法排序 - 这不会很好地转换为SQL查询。
以下是您可以做的事情:
from django.db.models import Count
board_list = Board.objects.annotate(num_posts=Count('post')).order_by('num_posts')