我正在努力为我想要的东西找到最好的方法。我可以为此使用一些帮助。
我有 A 型和 B 型。B 型有
modela = forms.ForeignKey(Model a)
我想创建一个视图,您可以在其中编辑单个模型 A 和多个模型 B 在同一页面上。Django 有这方面的表单集,它们工作得很好。
不过,我有一个细节,这会让事情变得有点混乱。即 - 我希望小部件或模型 B 字段根据它们在同一对象的先前字段中所做的选择而有所不同。因为 - 基于类型,小部件必须是日期时间选择器输入或纯文本输入。
模型 B 如下所示:
class ModelB(models.Model):
m0odela = models.ForeignKey(ModelA)
target_value = models.CharField()
target_type = models.CharField( choices = ( there are choices))
target_threshold = models.CharField()
我知道我可以为表单集提供我自己的表单,并且我可以在该表单中执行此小部件分配。
但问题是,当表单集没有实例/查询集时,我无法检查是否为表单实例设置了“target_type”。所以我必须根据 self.data 或 self.initial 的形式来做。但是 self.initial 也不存在于form.__init__()
. 我可以使用的是 self.data - 但那是原始 request.POST 或 request.GET 数据 - 其中包含所有键,如“mymodelb_set-0-target_type”。
所以我有点迷路了。我是否必须进行一些关键解析并找出哪个 -target_type 属于当前表单并在那里获取选择的值并根据该值分配小部件?还是我必须创建自己的 BaseInlineFormSet 子类并以某种方式覆盖 _construc_form ?因此,该表单将具有 **kwargs 中相关数据的初始键。
以前有人遇到过这种问题吗?
艾伦