如何在Django中按用户配置文件的属性过滤查询?

时间:2010-03-10 22:43:15

标签: python django

我有两个模型,DesignProfile。配置文件在settings.py中作为要与User模型一起使用的配置文件连接。所以我可以通过user.get_profile()访问它。

每个Design实例都有一个author属性,它是对用户的ForeignKey。

所以,当我查看任何视图时,我可以通过以下方式获取屏幕名称(Profile的属性):

user.get_profile().screenname

但是对于此属性,SEARCH BY FILTER的语法是什么?我目前有什么:

designs = Design.objects.filter(author__userprofile__screenname__icontains=w)

这不起作用。想法?

1 个答案:

答案 0 :(得分:8)

如果您的个人资料类名为个人资料,并且您尚未自定义用户< - >使用ForeignKey的related_name属性进行配置文件关系,然后您不应该通过以下方式访问:

designs = Design.objects.filter(author__user__profile__screenname__icontains=w)

用户 - >配置文件跨越一个关系,因此您需要额外的双下划线。