将UserProfile中的搜索功能添加到Django | search_字段中的UserAdmin,并使用ForeignKey
我将Django的用户管理与使用foreignkey链接到用户模型的用户配置文件结合使用。现在,我想让用户配置文件中的字段可以从UserAdmin进行搜索 我最好的猜测是使用这样的东西:将UserProfile中的搜索功能添加到Django | search_字段中的UserAdmin,并使用ForeignKey,django,django-admin,Django,Django Admin,我将Django的用户管理与使用foreignkey链接到用户模型的用户配置文件结合使用。现在,我想让用户配置文件中的字段可以从UserAdmin进行搜索 我最好的猜测是使用这样的东西: class UserAdmin(auth.admin.UserAdmin): def field_name(self, obj): return obj.get_profile().name list_display = ('field_name',) search
class UserAdmin(auth.admin.UserAdmin):
def field_name(self, obj):
return obj.get_profile().name
list_display = ('field_name',)
search_fields = ('field_name',)
虽然列表显示工作正常,但在提交查询时搜索字段会给我一条错误消息:无法将关键字“字段名称”解析为字段。选择是:[……]
你知道怎么做吗?提前谢谢。您可以使用带有双下划线的queryset表示法来表示连接,例如
search_fields = ('company_name','user__username')
更多信息真正的问题是
auth_user
表没有配置文件模型的外键,而是相反。用户模型中唯一的连接是.get\u profile()
方法,无法使用双下划线访问该方法,因为它是一个方法而不是字段。抱歉,反向关系可以工作。profile\uuuu name或profile\uuuu name\uuuu包含的内容取决于您的模式。在ipython把这些事情梳理出来是件好事。它将是User.objects.filter(what\uu you\uu want='foo')。如果你还有问题,你可能想发布你的个人资料模型谢谢,迈克尔。相反的关系起了作用。我不知道为什么我没有从你到django文档的链接中得到这些信息。也许我太累了,想不清楚。