我试图弄清楚如何根据前一个字段的输入动态更改ModelForm字段。在
例如,如果我有以下类型的模型:
class Phone(models.Model):
name = models.CharField(max_length=10)
class Series(models.Model):
name = models.CharField(max_length=10)
class Manufacturer(models.Model):
phone = models.ForeignKey('Phone')
series = models.ForeignKey('Series')
class ManufacturerForm(ModelForm):
class Meta:
model = Manufacturer
这将生成一个表单(ManufacturerForm),其中包含数据库中电话和系列条目的下拉选项。例如,是否可以根据用户输入的phone
创建一组不同的series
项?在
我已经读过关于使用__init__
方法来实现这一点的,这是基于我在this blog post上所读到的,但是我不确定如何在给定的场景中执行这一点。或者也许有更好的方法来实现你所做的?谢谢你的建议!在
编辑:添加窗体的视图。在
^{pr2}$@super9提到使用ajax请求来更改这些元素。我需要检查if request.is_ajax()
,但在我看来,我应该在什么时候检查这个呢?如何根据ajax请求添加或更改queryset?在
谢谢你的建议。在
编辑:尝试使用django智能选择
不知道如何设置我的模型来利用django智能选择来完成我正在尝试的。以下是我如何构建我的模型:
from smart_selects.db_fields import ChainedForeignKey
class Phone(models.Model):
phone = models.CharField(max_length=10)
class Series(models.Model):
series = models.CharField(max_length=10)
phone = models.ForeignKey(Phone)
class SeriesModel(models.Model):
model = models.CharField(max_length=10)
series = models.ForeignKey(Series)
class Manufacturer(models.Model):
phone = models.ForeignKey(Phone)
series = ChainedForeignKey (Series, chained_field = "phone", chained_model_field = "phone")
series_model = ChainedForeignKey (SeriesModel, chained_field = "series", chained_model_field = "series")
但是当我查看我的表单(ModelForm)时,series_model
的字段没有正确地链接到series
。我是否遗漏了让智能选择在第二层抽象上工作的东西?在
编辑:以上代码现在有效。在
目前没有回答
相关问题 更多 >
编程相关推荐