Django-将对象的m2m关系保存到另一个对象

时间:2019-10-18 20:36:32

标签: django-models django-forms django-views many-to-many manytomanyfield

我有一个用于调查答复的临时答复模型。当用户在调查的最后一页上将答案保存到Temporaryresponse对象时,我还希望将所有内容从该对象保存到新的Completedresponse对象。除了我似乎无法将所有保存到Temporaryresponse对象中“ race”字段的m2m对象保存到Completedresponse对象中“ race”字段之外,一切都正常。

无论我尝试添加还是设置,我都找不到正确的方法。

P.S。 -我真的只想将这个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 :(得分:0)

谢谢。我是编码的新手,需要快速启动并运行,因此在我继续学习的过程中,我将其用作安全性的初步提升。

我想出了正确的方法:

    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()