Python Django和查询中的额外字段

Python Django和查询中的额外字段,python,django,postgresql,django-orm,Python,Django,Postgresql,Django Orm,我在Django中有一个my查询,它返回一个用户列表 现在,对于每个返回的用户,我想添加一个额外的字段:我需要知道该用户是否已经是当前用户的朋友 我不明白是否必须使用.annotate或extra()或其他。我很困惑 我也尝试过此代码,但不起作用: query = query.annotate(are_friends=Count(Q(user__friends=user))) 我得到了这个错误:'Q'对象没有属性“split”听起来您想在这里使用额外的 大致如下: User.objects.a

我在Django中有一个my查询,它返回一个用户列表

现在,对于每个返回的用户,我想添加一个额外的字段:我需要知道该用户是否已经是当前用户的朋友

我不明白是否必须使用.annotate或extra()或其他。我很困惑

我也尝试过此代码,但不起作用:

query = query.annotate(are_friends=Count(Q(user__friends=user)))

我得到了这个错误:
'Q'对象没有属性“split”

听起来您想在这里使用
额外的

大致如下:

User.objects.all().select_related().extra(
     select={'is_friend': "user__friends = user"})
extra
select
参数采用一个
dict
,其中包含列的键值对以及如何计算这些列。根据数据和模型的确切性质,您可能需要稍微修改一下
“user\uu friends=user”
部分,但这应该是您想要做的事情的一般方法