【问题标题】:How to create multiple instances of same field type in django?如何在 django 中创建相同字段类型的多个实例?
【发布时间】:2016-04-13 14:26:50
【问题描述】:

假设我有示范教室:

class Classroom(models.Model):
    name = models.CharField(max_length=255,)
    number_of_students = models.IntegerField()

每个教室可以有不同数量的学生。我想有与课堂模式相关的班级学生

class Students(models.Model):
    student_name = models.CharField(max_length=255)
    student_gender = models.CharField(max_length=255)
    classroom = models.ForeignKey(Classroom)

我想在输入学生人数时为每个学生获取新表格。我怎么能这样做?

【问题讨论】:

    标签: django forms dynamic models multiple-instances


    【解决方案1】:

    number_of_students设为教室属性,只需简单查询即可检索,无需存储任意数字

    @property
    def number_of_students(self):
        return self.students_set.count()
    

    【讨论】:

      【解决方案2】:

      我猜您正在寻找的是动态表单生成。几个指针:

      1) 执行此操作的最佳方法 (IMO) 是使用一些 javascript 库即时附加表单。不断检查用户输入并动态添加/删除表单。可以使用form_1form_2等id来区分学生表单。

      2) 然后,在您的后端,您将遍历 POST 参数并手动创建学生字段(在创建课程之后)。您如何知道用户填写了多少学生(即提交了多少学生表格)?将用户输入作为表单中的隐藏字段传递,然后循环遍历它。

      这将使您能够为创建班级及其学生提供单一视图。

      另一种选择:

      1) 在init 期间将学生人数作为额外参数传递给您的StudentCreationForm(或ClassCreationForm)。这要求您在前一页(通过 ajax/post)将学生人数作为用户的输入。下面的链接提供了一个关于如何实现这一点的优秀教程:

      https://jacobian.org/writing/dynamic-form-generation/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-04-02
        • 1970-01-01
        • 1970-01-01
        • 2011-01-29
        • 2011-08-05
        • 1970-01-01
        • 2021-08-01
        • 1970-01-01
        相关资源
        最近更新 更多