我有一个像这样的模型:
class my_model(models.Model)
foo = models.ManyToManyField(My_other_model)
我想my_model
按foo字段中的对象数量来排序所有对象。在这个问题中,来自俄罗斯的一个友好的家伙说,您应该使用django-annontation。我尝试了以下方法:
my_model.objects.all().order_by("-foo")
而且效果很好。有什么理由让我对注解走得更远吗?感谢您的帮助并保持健康!
从文档中,您的用例可以只使用.order_by()
。对于更复杂的查询,您将这样使用.annotate()
:
below_5 = Count('book', filter=Q(book__rating__lte=5))
pubs = Publisher.objects.annotate(below_5=below_5)
您还可以像这样进行多个注释:
below_5 = Count('book', filter=Q(book__rating__lte=5))
above_5 = Count('book', filter=Q(book__rating__gte=5))
pubs = Publisher.objects.annotate(below_5=below_5).annotate(above_5=above_5)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句