在没有内联表单集的情况下将多个保存到一个-Django 2.1

时间:2019-02-24 13:37:48

标签: django one-to-many

在Django中不使用内联表单集保存与另一个模型相关的表单的最佳过程是什么?

问题设置:

模型地址通过外键与模型用户相关

每个用户可以有多个地址。我想为用户添加一个新地址。

views.py

在AddAddress类(扩展CreateView)中,form.errors具有错误

  

{'用户':['此字段为必填。']}

用户pk在网址/address/add/<int:pk>

1 个答案:

答案 0 :(得分:1)

首先,如Daniel Roseman所指出的,必须确保表单的字段列表中不存在“用户”字段。这将确保该表格有效。

重写视图类中的form_valid方法以保存表单而不提交,然后将所需的用户设置为结果实例,然后直接在其上调用保存。

def form_valid(self, form):    
    address_obj = form.save(False)
    address_obj.user = User.objects.get(pk=self.kwargs['pk'])
    return HttpResponseRedirect(self.get_success_url())