Django中的链式选择[模块:django-smart-selects] - python

我正在尝试使用django-smart-selects模块来创建相关的下拉列表。我遵循了文档并定义了模型,在其中使用了“ ChainedForeignKey”来定义公司与产品之间的链接。
models.py

class Company(models.Model):
    name = models.CharField(max_length=255)

    def __str__(self):
        return self.name


class Product(models.Model):
    company = models.ForeignKey(Company, on_delete=models.CASCADE)
    name = models.CharField(max_length=255)

    def __str__(self):
        return self.name

class Rates(models.Model):
    company = models.ForeignKey(Company, on_delete=models.CASCADE)
    product = ChainedForeignKey(
        Product,
        chained_field = "company",
        chained_model_field = "company",
        show_all = False,
        auto_choose = True,
        sort=True)
     taux_comm_1 = models.FloatField(validators=[MinValueValidator(0), MaxValueValidator(1)])
     taux_comm_2 = models.FloatField(validators=[MinValueValidator(0), MaxValueValidator(1)]) 

然后我定义了一种形式:
表格

class Rates(forms.ModelForm):
    class Meta:
        model = Rates
        fields= ['company', 'product', 'taux_comm_1', 'taux_comm_2']

从我的数据库中检索数据,我可以从第一个下拉列表中选择一家公司。但是,第二个列表(产品)已锁定。我已经将产品与数据库中的公司相关联(使用外键)。
如果你们有什么想法我可以解决这个问题,那将是非常好的。我已经搜索了类似的问题,但是找不到类似的问题。
这是表格的屏幕截图。
Django中的链式选择[模块:django-smart-selects] - python

参考方案

我使用了JS Lint brach(https://github.com/digi604/django-smart-selects/tree/js-unlinting-fixes),它解决了这个问题。

参考:https://github.com/digi604/django-smart-selects/issues/258

编辑:添加分步说明以解决该问题:

步骤1:删除django-smart-selects的现有版本。在终端中键入pip uninstall django-smart-selects

第2步:通过输入安装JS-lint分支

pip install git+https://github.com/digi604/django-smart-selects.git@js-unlinting-fixes` 

步骤3:将'smart_selects',添加到INSTALLED_APPSsettings.py列表中。

步骤4:在应用程序的from smart_selects.db_fields import ChainedForeignKey中添加models.py

步骤5:将smart_selects网址添加到项目的urls.py中。这对于Chained SelectsChained ManyToMany选择是必需的。例如:

urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^chaining/', include('smart_selects.urls')),
)

步骤6:您还需要在每个页面中包含jQuery,该页面包含来自smart_selects的字段。在项目的USE_DJANGO_JQUERY = True中添加settings.py

步骤7:在HTML文件中的{{ form.media.js }}之前添加{{ form.as_table }},以便从Django模型派生的Django表单反映智能选择功能。

我正在使用Python 2.7.10和Django 1.11。

祝一切顺利!

Django TestCase不保存我的模型 - python

我目前正在为Django应用编写一些测试。我的应用程序的signal.py文件中具有以下独立功能:def updateLeaveCounts(): # Setting some variables here todaysPeriods = Period.objects.filter(end__lte=today_end, end__gte=today_sta…

Django 1.8-如何测试tests文件夹中的特定文件? - python

这是我的目录:CMSApp/tests/test_page.py CMSApp/tests/test_user.py CMSApp/models.py CMSApp/views.py 我只想测试test_page.py。我可以做这个:python manage.py test CMSApp/tests 但这将同时测试test_page.py和test_use…

处理后如何删除照片? - python

我的Django模型中有两个字段: class Staff(models.Model): photo = models.FileField(blank=True, null = True) encodings = JSONField() 我从表单获取照片,然后使用该照片获取编码。处理后如何删除照片?我试过了self.photo = None or self.…

django-compressor未与django-shop一起安装 - python

我无法使用django-shop安装django-compressor。出现这样的错误。Failed building wheel for rcssmin ================================= Failed building wheel for rjsmin -----------------------------------…

如何在Django中解决模块名称冲突? - python

创建Django应用程序时出错:python端发生错误。退出代码:1,err:CommandError:'untitled1'与现有Python模块的名称冲突,因此不能用作项目名称。请尝试使用其他名称。 python大神给出的解决方案 您正在使用哪个版本的python?升级您的django版本或降级您的python版本,这应该可以解决问题。您可以在cl中执行…