Как добавить поле ManyToMany со сквозным отношением к светильникам? - PullRequest
1 голос
/ 04 мая 2020

В тестах (фикстурах) я хочу добавить поле с полем ManyToMany со сквозным отношением, т.е.

my_field = models.ManyToManyField(SomeModel, through=AnotherModel).

Пытался добавить как обычный ManyToManyField, например:

object.my_field.add(my_field)

, но это выдает мне это предупреждающее сообщение: введите описание изображения здесь

Кроме того, пробовал это:

object.my_field.add(my_field, through_defaults=AnotherModel)

также не работал

1 Ответ

1 голос
/ 04 мая 2020

Вы просто создаете объект AnotherModel, поэтому:

AnotherModel.objects<b>.create(firstmodel=object, somemodel=myfield)</b>

Если AnotherModel содержит дополнительные поля, которые не имеют значения по умолчанию, вам также необходимо указать их.

Или вы можете использовать .add(..) [Django -doc] , где through_defaults должен содержать словарь со значениями для передачи в AnotherModel:

object.my_field.add(my_field<b>, through_defaults={'field1': 14, 'field2': 25}</b>)

Дополнительные сведения о through_defaults см. В разделе Дополнительные поля отношений «многие ко многим» в документации . Это содержит пример, такой как:

beatles.members.set([john, paul, ringo, george], <b>through_defaults={'date_joined': date(1960, 8, 1)}</b>)

В этом примере members объекта beatles представляет собой ManyToManyField с промежуточной моделью, и здесь мы заполняем date(1960, 8, 1) как значение для date_joined в этой модели.

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