0

我有一个可能很基本的问题:我目前正在为我的课程中的学生和他们的分数建立一个数据库。我的 models.py 目前有两个主要类:学生(包含他们的姓名、ID、电子邮件地址等)和课程(包含 ID、运行年份和评估信息 - 例如“论文”“40% ““演示文稿”“10%”“考试”“50%”)。当然,Student 有一个 ManyToMany 字段,这样我就可以将学生分配给课程,反之亦然。我必须能够添加和修改这些东西。

现在,显然,我希望能够为不同作业中的学生添加分数(因课程而异)。由于我在数据库编程方面非常缺乏经验,我希望你们中的一个可以给我一个提示,如何在我的模型中进行设置。

谢谢,托比

4

3 回答 3

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)并将其包含在模型中,相对容易地对其进行修改。

希望这会有所帮助:)

于 2013-01-20T20:08:05.323 回答
0

创建一个名为“Assessments”的模型,它有一个指向 Course 的外键。此外,创建一个名为“Assessment Type”的字段,另一个名为“Assessment Result”,最后一个名为“Assesment Date”。应该是这样的:

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 来查看是否有任何课程等待考试。

于 2013-01-20T19:53:16.697 回答
0

您应该查看classcommmodels.py文件,这是一个用 Django 编写的内容管理系统,用于在 Web 上交付和管理课程。

它有以下型号

  1. 部门
  2. 课程
  3. 讲师
  4. 导师
  5. 注册
  6. 任务
  7. DueDateOverride
  8. 提交
  9. 年级
  10. 额外信用
  11. 信息
  12. 资源
  13. 公告

您可能不需要如此复杂的关系来处理您的情况,但它的models design.

您可以在该项目的主页上找到更多详细信息。

于 2013-01-20T20:06:05.440 回答