2012-04-12 36 views
0

例如,我想要获取User s的列表。我目前的查询集看起来像这样有没有在过滤器查询集中引用user.pk的用户?

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模型进行过滤。

回答

2

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