Как связать отношения многие ко многим, если я сохраняю их через 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.

Вернуться на верх