Административная форма Django 1.11 добавляет поле поиска в поле oneToOne

У меня есть модели пользователя, администратора и сотрудника, оба сотрудника и администратора связаны с моделью пользователя с полем oneToOne, что я хотел бы сделать, это в форме администратора у меня есть одно поле "пользователь"

вместо того, чтобы иметь раскрывающееся поле со всеми пользователями, я хотел бы иметь окно поиска, чтобы при поиске конкретного пользователя я находил его и выбирал его в качестве администратора.

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

2 ответа

Решение

Я решил эту проблему, используя пакет django-ajax-select. Надеюсь, что это поможет вам.

Приложение / admin.py:

from ajax_select import register, LookupChannel

@register('users')
class UsersLookup(LookupChannel):

    model = User

    def get_query(self, q, request):
          return self.model.objects.filter(username__icontains=q)

class EmployeeAdminForm(forms.ModelForm):
    user = AutoCompleteSelectField('users', required=False, 
                                  help_text=None)

    class Meta:
         model = Employee
         fields = '__all__'

settings.py

AJAX_LOOKUP_CHANNELS = {
    'users'  : {'model': 'auth.user', 'search_field': 'username'},
}

Используйте rawjid_fields от django. При этом вы можете объявить объект внешнего ключа доступным для поиска.

Другие вопросы по тегам