是否在没有在过滤器查询集中声明user.pk的情况下引用用户?

时间:2012-04-12 22:43:24

标签: python django django-queryset

例如,我想获得User的列表。我当前的查询集看起来像这样

creator_list = User.objects.filter(
    Q(userprofile__place__managers=user) |
    Q(pk=user.pk)
)

我发现我可以使用...managers=user.pk

获得相同的结果
creator_list = User.objects.filter(
    Q(userprofile__place__managers=user.pk) |
    Q(pk=user.pk)
)

我曾经一直写...=user.pk,直到我意识到我可以简单地删除pk部分。那么在第二个Q()子句中,是否可以删除pk部分?因此我想让它看起来像

creator_list = User.objects.filter(
    Q(userprofile__place__managers=user) |
    Q(something=user)
)

我理解pk接受模型的主键,这是一个整数,但是当我已经知道我希望过滤器通过User时,为什么我需要指定它模型。

1 个答案:

答案 0 :(得分:2)

不幸的是没有。字段查找需要字段,因此必须使用PK,因为无法专门引用模型指示的行。