2

私は次のシナリオを持っています:

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 またはコースのセッションが 8 つではなく 7 つになったなど)。

各 CourseTemplate インスタンスと各 CourseEnrollment の間に 1 対 1 の関係を持たせたいので、たとえば次のように表示できます。コース。

提示された「テンプレート」は常に「最新」である必要があるため、CourseTemplate.date_added までに最新のインスタンスを取得するだけで済みます。

この問題を回避する方法を知っている人はいますか?

どうもありがとう!

4

1 に答える 1

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 
于 2012-08-29T17:02:35.233 に答える