gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 19:44:04 25 4
gpt4 key购买 nike

我正在尝试使用 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)])

然后我定义了一个表单:

forms.py

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

数据是从我的数据库中检索的,我可以从第一个下拉列表中选择一家公司。但第二个列表(产品)已被锁定。我已将产品与数据库中的公司关联起来(使用外键)。

如果你们有任何想法我可以如何解决这个问题,那就太好了。我搜索过类似的问题,但找不到类似的内容。

这是表单的屏幕截图。

Here is a screenshot of the form

最佳答案

我使用了 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', 添加到 settings.py 中的 INSTALLED_APPS 列表。

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

第 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 步:您还需要在每个包含 smart_selects 字段的页面中包含 jQuery。在项目的 settings.py 中添加 USE_DJANGO_JQUERY = True

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

我使用的是 Python 2.7.10 和 Django 1.11。

祝一切顺利!

关于python - Django 中的链式选择 [模块 : django-smart-selects],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51670846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com