ManyToMany модели отношений Джанго - PullRequest
0 голосов
/ 08 декабря 2018

У меня есть две модели:

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 есть факультет 1 и факультет 2.

В университете 2 есть факультет 1.

Я хочу, чтобы эти отделы хранили индивидуально для каждого университета.Теперь, когда я обновлю Department1, конечно, каждый университет, в котором есть эта школа, увидит изменения.Я не хочу этогоЯ хочу обновить Department1, но только для записи University1.Department1 в University2 не должен обновляться.

Я предполагаю, что добавление опции through с промежуточным значением model не поможет.Какое лучшее решение?

1 Ответ

0 голосов
/ 08 декабря 2018

Для первой части вашего вопроса

But I also want to store more departments individually for one university.
  • Вы можете создать отделения и добавить их только в университет, с которым вы хотите иметь отношения.

Для второй части вашего вопроса

Я хочу обновить Department1, но только для записи University1.Отдел1 в Университете2 не должен обновляться

  • Вы должны добавить через таблицы.Сквозная таблица определяет отношения между двумя моделями, и ее целью является сохранение того, что уникально для каждого конкретного отношения.

Поэтому, если вы хотите обновить Отдел 1 для всех университетов, обновите экземпляр Отдела 1.

Если вы хотите обновить только для Отдела 1 что-то уникальное между Отделом 1 и Университетом 1, это указывается в сквозной таблице между двумя моделями.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...