如何在 Django 管理面板中使用智能选择?

How to use smart-selects in Django admin panel?

我正在尝试使用 django-smart-selects 在 Django 管理面板中执行 smart-selects。我想确保在创建术语时,您首先需要 select 一个主题,并基于此项目 select 与此主题相关的部分。 我做了 pip install django-smart-selects 并将 smart_selects 添加到 INSTALLED_APPS

这是我的代码。

models.py

from smart_selects.db_fields import ChainedForeignKey

class Subject(models.Model):
    name = models.CharField(max_length=128)

class Section(models.Model):
    subject = models.ForeignKey(Subject, on_delete=models.CASCADE)
    name = models.CharField(max_length=128)
    position = models.IntegerField()

class Term(models.Model):
    subject = models.ForeignKey(Subject, on_delete=models.CASCADE)
    section = ChainedForeignKey(Section, chained_field='subject', chained_model_field='subject', show_all=False)
    name = models.CharField(max_length=128)
    definition = models.TextField()

urls.py

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('subjects.urls')),
    path('', include('main.urls')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

当我创建一个新术语并选择一个主题时,我可以 select 任何部分,而不仅仅是与这个主题相关的部分。我想我需要将 include('smart_selects.urls') 添加到管理路径。

我试过这样做,但没有任何改变:

path('admin/', admin.site.urls),
path('admin/', include('smart_selects.urls')),

我也尝试这样做,但它给出了“TypeError 'tuple' object is not a mapping”:

path('admin/', admin.site.urls, include('smart_selects.urls')),

问题是在admin.pyTermAdminclass,我写了autocomplete_fields = ['section']。删除此行后,一切正常。