Django中的动态嵌套表单集

3 投票
1 回答
1017 浏览
提问于 2025-04-16 19:21

我看到了一些博客文章(比如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 我不太确定是否可以对表单集类进行修改,让它支持嵌套,同时又能保持与之前版本的兼容。根据我以前的经验,这会非常复杂。

撰写回答