如何在 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.py
中TermAdmin
class,我写了autocomplete_fields = ['section']
。删除此行后,一切正常。
我正在尝试使用 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.py
中TermAdmin
class,我写了autocomplete_fields = ['section']
。删除此行后,一切正常。