Django:从一个视图创建多个对象

时间:2017-11-03 14:13:57

标签: django python-3.x

我正在建立一个网站,允许教师向学生提问,并从学生那里得到答案。

每个'评论'将包括标题,描述,然后通过外键与审查相关的一系列问题。这些问题将逐一添加并添加更多Javascript将用于添加其他字段。

我目前正在考虑通过一个视图来实现这一目的,该视图首先处理一个创建Review对象的表单,其中包含标题,描述和创建它的用户。然后,用户输入的所有问题都会使用刚刚创建的评论的ID为每个问题创建一个对象。

我创建了一个简单的表单和一个查看块的视图,但是我不知道如何处理用户想要添加的问题。

如果还有其他更好的方法,请告诉我们!

由于

2 个答案:

答案 0 :(得分:1)

我假设你的models.py中有大致这些类:

Student
Teacher
Review
Question

因此,它是关于设置底层数据模型以促进您想要实现的内容。我建议您需要在这里实现多对多关系,以便将问题和答案映射到评论。 对于每次审核,您需要将其加入问题,例如:

class ReviewQuestions(models.Model):
    questionID = models.ForeignKey(Question)
    reviewID = models.ForeignKey(Review)
    questionNumber = models.IntegerField()

应该将评论加入到问题列表中,您甚至可以添加一个问题编号(根据上面的示例)。

要加入答案,您需要使用以下内容链接每个学生对问题的答案:

class ReviewQuestionAnswers(models.Model):
    reviewQuestionID = models.ForeignKey(ReviewQuestions)
    studentID = models.ForeignKey(Student)
    answer = models.TextField()

当然答案可能是整数或其他内容,但这种结构意味着对于每个评论的每个问题,您可以为每个学生存储答案。

然后,您应该能够呈现ReviewQuestions模型,因为它将链接到reviewID(这样您就可以获得所有详细信息)并只为每个要添加的问题添加记录。

答案 1 :(得分:0)

如果您的用户将在Django管理员中,那么您正在寻找inlineModelAdmin: https://docs.djangoproject.com/en/1.11/ref/contrib/admin/#django.contrib.admin.InlineModelAdmin

如果此视图不在Django管理员之外,您可以使用模型formset复制该功能: https://docs.djangoproject.com/en/1.11/topics/forms/modelforms/#model-formsets

它们允许您创建同一模型表单的许多潜在实例,以便用户可以创建审阅对象,然后创建一个或多个与审阅相关的问题。

相关问题