ManyToMany模型关系Django

时间:2018-12-07 23:48:05

标签: python django many-to-many

我有两个模型:

class University(models.Model):
    name = models.CharField(max_length=50)
    address = models.CharField(max_length=50, null=True, blank=True)
    city = models.CharField(max_length=30, null=True, blank=True)
    country = CountryField(null=True, blank=True)
    created_at = models.DateTimeField(auto_now_add=True)
    modified_at = models.DateTimeField(auto_now=True)
    departments = models.ManyToManyField(Department)


class Department(models.Model):
    name = models.CharField(max_length=50)
    address = models.CharField(max_length=50, null=True, blank=True)
    created_at = models.DateTimeField(auto_now_add=True)
    modified_at = models.DateTimeField(auto_now=True)

我想University有很多Departments,反之亦然,这很好。 但是我也想为一所大学单独存储更多的系。

例如:

大学1有Department1和Department2。

University2拥有Department1。

我希望这些系分别为每所大学存储。现在,当我更新Department1时,当然拥有该学校的每所大学都会发生变化。我不要我想更新Department1,但只更新University1记录。不应更新University2中的Department1。

我认为在中间through处添加model选项不会有帮助。最好的解决方案是什么?

1 个答案:

答案 0 :(得分:0)

对于问题的第一部分

But I also want to store more departments individually for one university.
  • 您可以建立部门并将其添加到希望与之建立关系的大学中。

问题的第二部分

  

我想更新Department1,但仅更新为University1记录。   University2中的Department1不应更新

  • 您应该添加表格。贯通表定义了两个模型之间的关系,其目的是存储每种特定关系所独有的内容。

因此,如果要更新所有大学的Department 1,则更新Department 1的实例。

如果只想用部门1和大学1之间的唯一内容更新部门1,这将在两个模型之间的贯通表中显示。

enter image description here