Как связать отношения многие ко многим, если я сохраняю их через form.save() (django)?
По этой ссылке https://docs.djangoproject.com/en/3.2/topics/db/examples/many_to_many/ объясняется, что мне нужно сделать объект класса для сохранения соединения. Поскольку у меня много полей в моих классах, я использовал form.save() для их сохранения, но это не заполняет связь ManyToMany в классе. Как заполнить это поле?
def create(response):
if response.method == "POST":
if "next" in response.POST:
form = CreateNewPerson(response.POST)
form.save()
form2 = CreateNewDog() # form doesn't have filed many_to_many to Person, but class Dog does
class CreateNewDog(forms.ModelForm):
class Meta:
model = Dog
fields = ['name','years_old', 'sex', 'blood_type', 'image']
class Dog(models.Model):
owner = models.ForeignKey(Person, on_delete=models.SET_NULL, null=True)
user = models.ManyToManyField(User)
Вы можете сохранить форму, получить экземпляр и управлять отношением следующим образом:
def create(request):
if request.method == "POST":
if "next" in request.POST:
form = CreateNewPerson(request.POST)
person = form.save() # get the person
form2 = CreateNewDog(request.POST)
dog = form2.save() # get the dog
dog.user.add(person) # assign the person to the dog
Обратите внимание, что response
был заменен на request
.