Django和查询中的额外字段

时间:2015-05-09 16:05:17

标签: python django postgresql django-orm

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

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

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

我也试过这段代码但不行:

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

我收到此错误:'Q' object has no attribute 'split'

1 个答案:

答案 0 :(得分:0)

听起来你想在这里使用extra

这些方面的东西:

User.objects.all().select_related().extra(
     select={'is_friend': "user__friends = user"})

extra的{​​{1}}参数需要select,其中包含列的键值对以及如何计算这些列。根据数据和模型的确切性质,您可能需要稍微修改dict部分,但这应该是您要做的事情的一般方法。