我有以下场景:
class CourseTemplate(models.Model):
title = models.CharField(max_length=70)
teacher = models.ForeignKey(User)
description = models.TextField()
max_students = models.IntegerField()
sessions = models.ManyToManyField(CourseSession) # e.g. Session 1 Introduction, Session 2 Basics, etc.
rating = models.ManyToManyFields(StudentRating)
date_added = models.DateTimeField()
class CourseEnrollment(models.Model):
course = models.OneToOneField(CourseTemplate) # Each enrollment needs a new CourseTemplate Instance, so I can track it
students = models.ManyToManyField(User)
Class CourseSession(models.Model):
title = models.CharField(max_length=50)
date = models.DateTimeField()
details = models.CharField(max_length=100)
address = models.TextField()
#parent_course = models.ForeignKey(CourseTemplate)
class StudentRating(models.Model):
student = models.ForeignKey(User)
rating = models.IntegerField()
#course = models.ForeignKey(CourseTemplate)
现在教师(=用户)可以先创建一个包含所有必需详细信息的 CourseTemplate。保存后,他可以创建一个具体的“注册”,例如本学期有 5 个会话。也许他在 8 次注册后改变了一些细节(例如 CourseTemplate.description 或课程现在只有 7 节课而不是 8 节课)。
我想在每个 CourseTemplate 实例和每个 CourseEnrollment 之间建立 1:1 的关系,所以我可以看到例如: - 老师 X 有 2012 年的三个 CourseEnrollment,其中两个是相同的,或者 - 他第二次获得的评分课程。
呈现的“模板”应该始终是“最新的”,所以我只需要通过 CourseTemplate.date_added 获取最新的实例。
有谁知道我怎样才能避免这个问题?
非常感谢!