Django 1.9:如何制作动态表格?

时间:2016-02-08 20:03:20

标签: django python-3.x django-forms

我有一个名为Course的模型:

class Course(models.Model):
   number_of_semesters = models.PositiveIntegerField()
   field = models.CharField(max_length=30)
   qualification = models.ForeignKey(Qualification, on_delete=models.CASCADE)

我正在尝试获取一个表单,您可以从该页面输入用户想要的多个课程。我该怎么做?

2 个答案:

答案 0 :(得分:1)

我知道这是旧的,但我建议您使用Django Rest Framework。虽然一开始有点棘手,但您可以使用ViewSets和Serializers来获取多个对象并立即将它们保存在数据库中。 (顺便说一句,即使它用于API,您也可以轻松地用ViewSets替换普通的Django视图并将它们用作标准)。

我知道这实际上并不是你提出的要求,但我现在已经在Django中开发了一段时间了,而且我还没有能够以一种干净的方式使用formset来保存N个对象而不知道N. / p>

如果您决定接受我的建议,我建议您阅读以下内容:

  • Viewsets

  • 序列化程序(它们与DjangoForms基本相同)

  • 嵌套的Serializers(用于渲染/创建/链接您的ForeignKey实例)

    {{1}}

答案 1 :(得分:-1)

您可以这样做的一种方法是不使用formset,而是使用用于加载表单的前缀来获得创意。例如,+按钮加载一个空的表单,其前缀基于发布到视图的计数器(包括标记,类似“course-4”),因此您可以获得带有SomeForm(request.POST, prefix="course-4")的表单。在验证/保存视图时,您只需从POST解析前缀(使用正则表达式)并为每个前缀保存一个表单。

似乎比简单地使用formset更多的工作,但每次我尝试使用它们时我都不得不放弃它们,因为它们没有提供足够的灵活性。