Подтвердить что ты не робот

Виджет Django raw_id_fields, не отображающий значок поиска

У меня есть следующий код в моей 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' - это от ForeignKey до User.

Может быть, django отключает поиск ForeignKeys до User по соображениям безопасности, или я делаю что-то неправильно?

Виджет будет идеально подходит для выбора пользователей... Я имею в виду, я не могу оставить огромный выбор там с каждым пользователем моего сайта.

Спасибо.

4b9b3361

Ответ 1

Я нашел проблему благодаря этому сообщению в django-users.

Мне пришлось зарегистрировать в админе модель, на которую указывает ForeignKey.

Поиск не работает без этого.

Ответ 2

В файле admin.py добавьте:

admin.site.register(YourModel)

Это сделало трюк, где YourModel - модель, которая будет отображаться с увеличительным стеклом

Ответ 3

Привет столкнуться с той же проблемой, но по другой причине.

Интегрировать 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(...) повлияет на другого администратора приложения в глобальном масштабе!

Это еще одна причина отсутствия значка поиска.