Djnago Добавление объектов ManytoMany к объекту после его создания

Я пытаюсь добавить поле "многие ко многим" к объекту после его создания, но постоянно сталкиваюсь с одной и той же ошибкой: Прямое присвоение прямой стороне множества "многие ко многим" запрещено. Вместо этого используйте dogs.set().

в моем models.py

class linkedDog(models.Model):
    linked_dog = models.ForeignKey(Dog, blank=True, null=True, on_delete=models.CASCADE)
    service_chosen = models.ManyToManyField(Service, blank=True)
    shampoos_chosen = models.ManyToManyField(Shampoo, blank=True)
    total_time = models.IntegerField(blank=True, default=0)


class PsuedoAppointment(models.Model):
    client = models.ForeignKey(User, blank=False, on_delete=models.CASCADE)
    dogs = models.ManyToManyField(linkedDog, blank=True)
    total_time = models.IntegerField(blank=False, default=0)

Я пытаюсь добавить объект linkedDog к полю dogs в моих представлениях. Я использовал этот вопрос в качестве ссылки

Прямое присвоение прямой стороне множества "многие-ко-многим" запрещено. Вместо этого используйте emails_for_help.set()

Но не могу понять, что я делаю по-другому или где все идет не так

@login_required
def loggedin_appointment_view(request):
    if request.method == "POST":
        form = linkedDogForm(request.POST, user=request.user)
        if form.is_valid():
            dog = form.save()
            dog_id = dog.id
            dogsquery = linkedDog.objects.filter(id=dog_id)

            appointment = PsuedoAppointment.objects.create(client=request.user, dogs=None, total_time=None)

            for dog in dogsquery:
                appointment.dogs.add(dog)
            
            return render(request, 'home.html')
    
    else:
        dog_form = linkedDogForm(user=request.user)
        return render(request, "appointment_template/loggedin_appointmentmaker.html", context={'dog_form' : dog_form})

Я также пробовал

            dog = form.save()
            dog_id = dog.id
            dogsquery = linkedDog.objects.filter(id=dog_id)
            appointment = PsuedoAppointment.objects.create(client=request.user, dogs=None, total_time=None)

            appointment.dogs.set(dogsquery)

You should remove the dogs=None. Furthermore total_time can not be None, since it is a non-NULLable field, you can set this to 0 for or omit it from the .create(…) call [Django-doc]:

appointment = PsuedoAppointment.objects.create(
    client=request.user  # no dogs=None
)
for dog in dogsquery:
    appointment.dogs.add(dog)
Вернуться на верх