如何在django中创建相同字段类型的多个实例?

如何在django中创建相同字段类型的多个实例?,django,forms,dynamic,models,multiple-instances,Django,Forms,Dynamic,Models,Multiple Instances,假设我有一个模型教室: 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)

假设我有一个模型教室:

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)

当我输入学生人数时,我想为每个学生获得新表格。我该怎么做呢?

学生人数
作为教室的一个属性,只需进行简单查询即可检索,无需存储任意数字

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

我猜您需要的是动态表单生成。几点提示:

1) 最好的方法(IMO)是使用一些javascript库动态地附加表单。不断检查用户输入并动态添加/删除表单。您可以使用诸如
表单1
表单2
之类的ID来区分学生表单

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

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

另一种选择:

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