我有以下情况:
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年的三个课程入学,其中两个是相同的或 - 他的第二门课程获得了哪个评分。
所呈现的“模板”应始终为“最新”,因此我只需要通过CourseTemplate.date_added获取最新实例。
有谁知道如何避免这个问题?
非常感谢!
答案 0 :(得分:20)
您可以通过清除其主键复制任何现有的django模型实例,然后再次保存它。
ct = CourseTemplate.objects.all()[0]
print ct.pk
# some original pk
ct.pk = None
ct.save()
print ct.pk
# will be a new auto-incremented