Django raw_id_fields小部件没有显示搜索图标

时间:2013-05-15 20:18:29

标签: django django-admin

我的admin.py中有以下代码:

class UserManagedGroupAdmin(admin.ModelAdmin):
    inlines = [MembershipInline]
    search_fields = ('name', 'leader__username', )
    list_display = ('__unicode__', 'leader', )
    filter_horizontal = ('permissions', )
    raw_id_fields = ('leader', )

admin.site.register(UserManagedGroup, UserManagedGroupAdmin)

用于搜索的放大镜图标未显示在管理页面中。

这就是我得到的:

enter image description here

正如您所看到的那样,它显示的是模型的unicode方法,而不是我想要的搜索图标。

字段'leader'ForeignKeyUser

出于安全原因,django是否禁止搜索ForeignKeysUser,或者我做错了什么?

小部件非常适合选择用户......我的意思是,我不能在我的网站的每个用户那里留下一个巨大的选择。

感谢。

3 个答案:

答案 0 :(得分:23)

由于django-users中的this message,我发现了这个问题。

我必须在管理员中注册ForeignKey所指向的模型。

没有它,搜索就无法发挥作用。

答案 1 :(得分:0)

admin.py文件中添加:

admin.site.register(YourModel)

这就是诀窍,其中YourModel是用放大镜显示的模型

答案 2 :(得分:0)

您遇到相同的问题,但原因有所不同。

要将User和UserGroup与另一个应用程序的管理员(例如some_app)集成

我将以下代码添加到some_app/admin.py

class ProxyUser(User):
    class Meta:
        proxy = True
        verbose_name = User._meta.verbose_name
        verbose_name_plural = User._meta.verbose_name_plural


class ProxyGroup(Group):
    class Meta:
        proxy = True
        verbose_name = Group._meta.verbose_name
        verbose_name_plural = Group._meta.verbose_name_plural

admin.site.unregister(Group)
admin.site.unregister(User)
admin.site.register(ProxyGroup)
admin.site.register(ProxyUser, UserAdmin)

我认为unregister(...)将在全球范围内影响另一个应用程序的管理员!

这是缺少搜索图标的另一个原因。