2015-11-26 101 views
1

我想知道如何使用我的Django管理員的用戶名列中的詳細信息進行搜索,而無需直接瞭解用戶名。在Django中按用戶名字段搜索管理員

我在我的管理員中有對象,我希望能夠通過USERNAME_FIELD訪問關於給定用戶的這些對象。

起初我想:

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

但其產生的FieldError:無法解析關鍵詞「用戶名」到現場。

我現在正在嘗試一些我在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 

我能想到的唯一的辦法就是格式化字符串,我寧願不做,因爲這不是很好的代碼。

回答

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) 

希望這會有所幫助。

+0

不幸的是,這是行不通的。當我通過用戶名進行搜索時,出現FieldError:無法將關鍵字「用戶名」解析爲字段。 – CNB

+1

你使用自己的用戶模型或django的auth_user? –

+0

我正在使用用戶模式 – CNB