【发布时间】:2019-01-01 10:20:41
【问题描述】:
在这个question 中,我们得到了一个解决方案,可以根据两个多对多字段的交集对查询进行排序。虽然这是一个很好的答案,但限制是您必须先过滤。
假设我有相同的两个模型。有没有办法通过交叉点数来注释所有结果,这样我就可以显示所有问题,而不管位置如何,但仍按位置排序?
class Location(models.Model):
name = models.CharField(max_length=100)
class Profile(models.Model):
locations_of_interest = models.ManyToManyField(Location)
class Question(models.Model):
locations = models.ManyToManyField(Location)
我希望我能做这样的事情:
from django.db.models import Count
matching_profiles = Profile.objects.all().annotate(
locnom=Count('locations_of_interest__in=question.locations.all()')
)
有什么想法吗?我只需要进行两个查询并将它们合并吗?
【问题讨论】:
标签: python sql django django-models django-queryset