ManyToManyField以及每个

时间:2017-02-15 18:08:47

标签: django django-models many-to-many django-orm

我有以下型号:

class Course(models.Model):
    Name = CharField(max_length=32, unique=True,)

class Tutorial(models.Model):
    Name = CharField(max_length=64, unique=True,)
    Courses = ManyToManyField(Course,)
    Index = PosSmallInt()

有许多Course个,Course每个Tutorial都有Course个,但有些Tutorial个共享Tutorial个。{/ p>

现在,每个Index都应该在Course内有一个唯一的Courses

我想我应该指出ManyToManyFieldCourse)不久前是常规ForeignKeyTutorial),这意味着我有{{1}我在Meta Tutorialunique_together = (('Course', 'Index')) 中有这一行:

Course

Tutorial在同一Index内保持ManyToManyField不同。

但现在它是Course,这是不可能的。

示例:

我有以下Tutorial s Tutorial s:

  • C#:
    1. 语法
    2. 条件
    3. 循环
  • 的Python:
    1. 条件
    2. 循环
    3. lambda表达式

(为了示例,请考虑“条件”和“循环”以使完全相同的信息。)

如何在具有不同Course es的不同Index中拥有相同的SetHeaderImage(openFileDialog1.FileName); private static void SetHeaderImage(string filePath) { WindowsFormsApplication.Properties.Resources.add(filePath); }

1 个答案:

答案 0 :(得分:2)

尝试使用through属性:

class Tutorial(models.Model):
    Name = CharField(max_length=64, unique=True,)
    Courses = ManyToManyField(Course, through='TutorialCourse')

class TutorialCourse(models.Model):
    tutorial = models.ForeignKey(Tutorial, on_delete=models.CASCADE)
    course = models.ForeignKey(Course, on_delete=models.CASCADE)
    Index = PosSmallInt()

    class Meta:
        unique_together = (('tutorial', 'course', 'Index'))