【发布时间】:2018-03-15 23:42:48
【问题描述】:
最简单的例子:
class User(models.Model):
name = ...
class Group(models.Model):
members = models.ManyToManyField(User, through='GroupMembership')
class GroupMembership(models.Model):
user = ...
group = ...
我想获取按成员注释字段排序的组列表。
我正在使用三元组搜索来过滤和注释用户查询集。 为了获得带注释的用户,我有类似的东西:
User.objects.annotate(...).annotate(similarity=...)
现在我正在尝试按用户的“相似性”对 Groups 查询集进行排序:
ann_users = User.objects.annotate(...).annotate(similarity=...)
qs = Group.objects.prefetch_related(Prefetch('members',
queryset=ann_users))
qs.annotate(similarity=Max('members__similarity')).order_by('similarity')
但它不起作用,因为prefetch_related 在 Python 中进行了“加入”;所以我有错误:
"FieldError: Cannot resolve keyword 'members' into field."
【问题讨论】:
标签: python django django-models django-orm