Select2 в явном виде через модель в админке Django

Использование autocomplete_fields/search_fields в админке Django работает хорошо, чтобы вызвать виджет Select2 для поля ForeignKey, но я получаю ошибку, когда настраиваю все так, чтобы виджеты Select2 отображались на объявленной модели through в отношениях ManyToManyField. Мои модели отличаются от следующих, но используя пример из документации Django, где обсуждаются сквозные модели в админке, как отправную точку, я настроил все примерно так (пример в документации имеет неявную сквозную модель, но у меня явно объявленная through модель):

class Person(models.Model):
    first_name = models.CharField(max_length=128)
    last_name = models.CharField(max_length=128)

class Group(models.Model):
    name = models.CharField(max_length=128)
    members = models.ManyToManyField(Person, through='Membership', related_name='groups')

class Membership(models.Model):
    person = models.ForeignKey('Person', ...)
    group = models.ForeignKey('Group', ...)

и в admin.py:

class PersonAdmin(admin.ModelAdmin):
    inlines = [MembershipInline,]
    search_fields = ('first_name','last_name,)

class MembershipInline(admin.TabularInline):
    model = Membership
    autocomplete_fields = ('person',)

class GroupAdmin(admin.ModelAdmin):
    inlines = [MembershipInline,]

Когда я перехожу к GroupAdmin и пытаюсь создать членство, виджет Select2 отображается, но когда я пытаюсь найти человека, я получаю эту ошибку:

Forbidden (Permission denied): /admin/autocomplete/
Traceback (most recent call last):
  File "/virtualenvs/my_virtualenv/lib/python3.8/site-packages/django/utils/datastructures.py", line 84, in __getitem__
    list_ = super().__getitem__(key)
KeyError: 'app_label'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/virtualenvs/my_virtualenv/lib/python3.8/site-packages/django/contrib/admin/views/autocomplete.py", line 79, in process_request
    app_label = request.GET["app_label"]
  File "/virtualenvs/my_virtualenv/lib/python3.8/site-packages/django/utils/datastructures.py", line 86, in __getitem__
    raise MultiValueDictKeyError(key)
django.utils.datastructures.MultiValueDictKeyError: 'app_label'

Я использую django-jazzmin, так что проблема МОЖЕТ быть вызвана им, но виджеты Select2 прекрасно работают в ForeignKey отношениях, которые не являются частью сквозной модели. Кто-то столкнулся с чем-то подобным в Grappelli год назад, но я не могу сказать, похожа ли эта проблема.

Любая помощь будет очень признательна.

Вернуться на верх