Django - сохранить отношения m2m объекта к другому объекту - PullRequest
0 голосов
/ 18 октября 2019

У меня есть модель временного ответа для ответов на опрос. Когда пользователь сохраняет ответы на последней странице опроса в объекте Temporaryresponse, я хочу также сохранить все, начиная с этого объекта, до нового объекта Completedresponse. Все работает, КРОМЕ. Кажется, я не могу сохранить все объекты m2m, сохраненные в поле "race" в объекте Temporaryresponse, в поле "race" в объекте Completedresponse.

Независимо от того, что я пытаюсь сделатьдобавить или установить Я не могу найти правильный способ сделать это.

PS - я действительно просто хочу сохранить каждое поле из этого объекта Temporaryresponse в новый объект Completedresponse. Прямо сейчас я делаю это, сохраняя каждое поле вручную (см. Zip_code ...). Есть ли способ просто сохранить все сразу?

views.py

def vr(request, pk):
    finalresponse = get_object_or_404(Temporaryresponse, pk=pk)
    instance = Temporaryresponse.objects.get(pk=pk)
    if request.method == "POST":
        form = VotingresponseForm(request.POST, instance=instance)
        if form.is_valid():
            votingresponse = form.save()
            votingresponse.save()
            completed_response = Completedresponse(zip_code=votingresponse.zip_code,...)
            completed_response.save()
            completed_response.race.add(votingresponse.race)
            completed_response.save()
            return redirect('completed')

1 Ответ

0 голосов
/ 22 октября 2019

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

Я нашел правильный способ сделать это:

    if form.is_valid() and instance.ip == ip:
        votingresponse = form.save()
        votingresponse.save()
        completed_response = Completedresponse(zip_code=votingresponse.zip_coded...)
        completed_response.save()
        completed_response.race.set(votingresponse.race.all())
        completed_response.save()
        votingresponse.delete()
...