如何在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)。下面的链接提供了一个关于如何实现这一点的优秀教程: