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 год назад, но я не могу сказать, похожа ли эта проблема.
Любая помощь будет очень признательна.