我有一个非常基本的问题:我目前正在为我的课程中的学生和他们的分数建立一个数据库。我目前在models.py中有两个主要类:学生(包含他们的姓名,身份证,电子邮件地址等)和课程(包含一个id,它运行的年份和评估信息 - 例如“Essay”“40% “”演示文稿“”10%“”考试“”50%“)。当然,学生有一个ManyToMany字段,这样我就可以为学生分配课程,反之亦然。我必须能够添加和修改这些东西。
现在,显然,我希望能够为不同作业中的学生添加标记(不同的课程与课程不同)。由于我对数据库编程非常缺乏经验,所以我希望你们中的一位能给我一个提示,告诉我如何在我的模型中进行设置。
谢谢, 托比
答案 0 :(得分:1)
或许要解决这个问题的方法就是有一个单独的分配类,就像这样。
class Assignment(models.Model):
ASSIGNMENT_TYPES = (
('essay', "Essay"),
...
)
ASSIGNMENT_GRADES = (
('a+', "A+"),
('a', "A"),
...
)
student = models.ForeignKey("Student")
course = models.ForeignKey("Course")
assignment_type = models.CharField(choices=ASSIGNMENT_TYPES, max_length=15, default='essay')
progress = models.IntegerField()
grade = models.CharField(choices=ASSIGNMENT_GRADES, max_length=3, default="a+")
通过这种方式,您可以将一个作业连接到一个学生和一个课程。如果每个作业有多个学生,可以通过添加另一个类(例如StudentGroup)并将其包含在模型中来相对容易地进行修改。
希望这有助于:)
答案 1 :(得分:0)
创建一个名为“Assessments”的模型,该模型具有Course的外键。此外,创建一个名为“评估类型”的字段,另一个称为“评估结果”,最后一个名为“评估日期”。应该是这样的:
ASSESSMENTS = (('E','Essay'),('P','Presentation'))
class Assessment(models.MOdel):
course = models.ForeignKey('Course')
assessment = models.CharField(choices=ASESSMENTS)
result = models.CharField(max_length=250)
taken_on = models.DateField()
overall_result = models.BooleanField()
is_complete = models.BooleanField()
每次考试时,您都会在此表中填写每项评估的记录。您可以将整体结果用作标记,以查看学生是否已通过或失败,并使用is_complete查看是否有任何课程待学考试。
答案 2 :(得分:0)