Django中的动态嵌套表单集
我看到了一些博客文章(比如yergler写的那篇),但是一直没找到一个好的优雅的解决方案。
我有三个模型:
class Workflow(models.Model):
name = models.CharField(max_length=255)
company = models.ForeignKey(Company)
class Meta:
unique_together = ('name', 'company')
class Milestone(models.Model):
workflow = models.ForeignKey(Workflow)
tasks = models.ManyToManyField(Task)
class Task(models.Model):
task = models.CharField(max_length=255)
我该如何创建一个表单,让我可以为一个工作流程添加多个里程碑,并为每个里程碑添加多个任务呢?
基本上,我想给他们一个创建表单或者编辑表单,让他们可以用里程碑和任务来构建工作流程,但我希望能让他们通过JavaScript动态添加这些内容。
动态/JavaScript的部分其实很简单,但我一直没搞明白怎么在一个表单里面嵌套另一个表单,比如说在里程碑下面添加任务。
1 个回答
0
我个人觉得不使用表单集(formset)类会更简单,自己写一个嵌套表单集(NestedFormset)类就行了。比如说,这个类可以处理带有多个前缀的数据。
1.title => "Milestone 1 title"
2.title => "Milestone 2 title"
1.1.task => "Task for milestone 1"
1.2.task => "Task for milestone 2"
我很确定,如果有人在GitHub上发布这样一个可扩展的类似表单集的类,会吸引很多粉丝和赞誉 :P 我不太确定是否可以对表单集类进行修改,让它支持嵌套,同时又能保持与之前版本的兼容。根据我以前的经验,这会非常复杂。