@coalesce

Как сделать по аналогии с админкой в Django?

Хочу сделать форму как в админке:
Выбирать несколько объектов одной модели для поля ManyToManyField другой модели.
xh4rbfitt4hz4_t2kvo_24w0cho.png

Например, у меня есть 2 модели: сотрудники и команды. Команда состоит из сотрудников. Сотрудник может состоять в нескольких командах.
models.py
class Employee(models.Model):
    last = models.CharField...

class Team(models.Model):
    employees = models.ManyToManyField(Employee)


Если использовать стандартную форму
class TeamForm(forms.ModelForm):
    class Meta:
        model = Team


То инетфейс получается неудобным.
hqexnrdnm-sv1srre98v3wtpihc.png
Создаётся обычный select с multiple

Вопрос. Есть ли какая-то базовая админская форма от которой можно наследоваться или виджет чтобы минимальными усилиями получить интерфейс как в админке (на первом скриншоте)?
  • Вопрос задан
  • 771 просмотр
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
from django.contrib.admin.widgets import FilteredSelectMultiple

class TeamForm(forms.ModelForm):
    class Meta:
        model = Team
        fields = ('employees',)
        widgets = {
            'employees': FilteredSelectMultiple(u'Сотрудники', False),
        }
    class Media:
        css = {
            'all': ['admin/css/widgets.css'],
        }
        js = ['/admin/jsi18n/']
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@hellpirat
Full stack developer (Python/Django, React.js)
class TeamAdmin(admin.ModelAdmin)
    model = Team
    filter_horizontal = ('opetest',)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы