Python 如何构造需要验证嵌套在两个级别上的一对多关系的表单?
我有3个模型,我想从一个页面管理Python 如何构造需要验证嵌套在两个级别上的一对多关系的表单?,python,django,django-forms,Python,Django,Django Forms,我有3个模型,我想从一个页面管理 class Model1(models.Model): ... class Model2(models.Model): parent = models.ForeignKey(Model1) ... class Model3(models.Model): parent = models.ForeignKey(Model2) ... 假设我在编辑Model1实例的html页面上,如果Model1,我正在编辑id为1的实例
class Model1(models.Model):
...
class Model2(models.Model):
parent = models.ForeignKey(Model1)
...
class Model3(models.Model):
parent = models.ForeignKey(Model2)
...
假设我在编辑Model1
实例的html页面上,如果Model1,我正在编辑id为1的实例
我还想在这里编辑父级为当前Model1
实例的所有Model2
实例。更明确地说,我想编辑当前的Model2
实例,添加新实例,甚至删除现有实例
此外,我希望能够编辑/添加/删除与我将在本页上看到的Model2
实例相关的Model3
的新实例
我的问题与模板无关。一旦我的表格验证了他们应该验证的内容,我就可以接受这些
IDEA1
到目前为止,我想做的是破解表单
和表单集
对象,但当我查看表单集内部时,它似乎真的不支持这种深度关联的关系
IDEA2
我还考虑过创建一个html表单,动态生成输入元素,使用能够描述这个复杂层次结构的名称,然后在将数据传递给更简单的表单进行验证之前对其进行预处理
所以我说的是
data = {
'model1_name': 'Joe',
'model1_1_model2_color': 'red',
'model1_1_model2_1_model3_province': 'Florence',
'model1_1_model2_2_model3_province': 'Lombardia',
'model1_2_model2_color': 'blue',
'model1_2_model2_1_model3_accepted': True
}
看看我是如何生成这个关系图的
model1 (name=Joe)
\-> model2 (color=red)
| \-> model3 (province=Florence)
| \-> model3 (province=Lombardia)
\-> model2 (color=blue)
\-> model3 (accepted=True)
到目前为止,第二个想法对我来说似乎更易于管理,但是我必须使用Javascript来生成表单元素名称
无论如何,我很想知道是否有其他人尝试过这样做,什么解决方案有效。在这种情况下,我做的是两件事,一件在客户端表单上,另一件在服务器端。在客户端,我使用了dependent selects,它在更新时可以根据所选的值获取新数据(这可以是另一个dependent模型),并使用这些模型数据(使用适当的键)构建表单的一部分。然后在提交时,让服务器端验证所有这些并检查relationshipsbtw我正在为此使用一个定制的客户端MVVM框架,其中包括模型构建和来自声明性表单字段的验证等等。。我在服务器端有一个类似的验证框架