在Django admin中按用户名字段搜索

时间:2015-11-26 09:32:58

标签: python django django-admin

我想知道如何在不直接知道用户名的情况下使用我的Django管理员的用户名栏中的详细信息进行搜索。

我的管理员中有对象,我希望能够通过USERNAME_FIELD进行搜索,以访问有关给定用户的这些对象。

起初我试过了:

 search_fields = ('user__username', 'user__email',)

但是这产生了一个FieldError:无法解析关键字' username'进入田野。

我现在正在尝试在Django文档中找到的内容,但是它给了我一个错误,该错误表示“解压缩的价值太多”。

def get_search_results(self, request, queryset, search_term):
     queryset, use_distinct = super(MyAdmin, self).get_search_results(request, queryset, search_term)
     queryset = self.model.objects.filter(get_user_model().USERNAME_FIELD)
     return queryset, use_distinct

我能想到的唯一解决方案是格式化一个我不愿意做的字符串,因为它不是很好的代码。

1 个答案:

答案 0 :(得分:0)

您可以通过在admin.py文件中添加以下内容来完成此操作。

class WebUser(User):

    class Meta:
        proxy = True
        verbose_name = "User"
        verbose_name_plural = "Users"


class UserAdmin(admin.ModelAdmin):
    search_fields = ('user__username', 'user__email')

admin.site.register(WebUser, UserAdmin)

希望这会有所帮助。