Правильный способ вставки объектов «многие ко многим» в Django? - PullRequest
2 голосов
/ 05 августа 2010

Я работал над моделью «многие ко многим» с дополнительными полями и увидел документацию для дополнительных полей во многих отношениях со многими

на их примере, чтобы создать членствоони используют

m2 = Membership.objects.create(person=paul, group=beatles,date_joined=date(1960, 8, 1), invite_reason= "Wanted to form a band.")

, но это означает, что у них уже есть экземпляры "персона" и "группа".Обычно, работая на веб-сайтах, у нас есть идентификаторы объектов ... поэтому, чтобы создать членство, я должен сделать:

person = Person.objects.get(pk=idPerson)
group = Group.objects.get(pk=idgroup)

Теперь поправьте меня, если я ошибаюсь, но не консультируемся ли мыбессмысленно два раза базу перед вставкой?потому что все, что нам нужно в членстве, это идентификаторы внешнего ключа, а не весь объект ... может быть, есть другой способ вставить в отношение многие ко многим, используя только идентификаторы

Ответы [ 2 ]

3 голосов
/ 05 августа 2010

Вы можете использовать

Membership.objects.create(person_id=person_id, group_id=group_id)

где person_id и group_id - это идентификаторы объектов, которые вы хотите связать.

0 голосов
/ 05 августа 2010

Ну, откуда вы взяли id_person или id_group? Они бы не существовали без человека или группы, к которой они принадлежат, верно? Я имею в виду, чтобы получить идентификатор этого человека, вы бы начали с человека , к которому у вас уже есть доступ .

При использовании Django вы можете спокойно перестать мыслить в терминах базы данных и более согласовывать свои мысли с объектами, имеющимися в вашем распоряжении.

В любом случае, Django не попадает в базу данных, пока не достигнет точки, в которой он абсолютно обязан.

...