【发布时间】:2020-12-22 17:53:34
【问题描述】:
我正在使用一个使用 2 个 ModelForm 实例的 CBV。我想显示单个表单错误。在基于类的视图中使用多个表单时,这似乎有点挑战。
这是一个较小的 sn-p 以显示我正在使用的内容...
class EmployeeCreate(CreateView):
form_class = EmployeeCreateForm
form_class_2 = AddressCreateForm
def post(self, request, *args, **kwargs):
employee_form = self.form_class(request.POST)
address_form = self.form_class_2(request.POST)
# Make sure both forms are validated
if employee_form.is_valid() and address_form.is_valid():
employee = employee_form.save(commit=False)
address = address_form.save(commit=False)
employee.parent = self.request.user
employee.save()
address.user = employee
address.save()
return JsonResponse({'message': 'Employee created successfully.'}, status=200)
else:
return self.form_invalid(**kwargs)
def get_context_data(self, **kwargs):
# render both forms to create an Account, and Address
context = super(EmployeeCreateView, self).get_context_data()
context['employee_form'] = self.form_class
context['address_form'] = self.form_class_2
return context
def form_invalid(self, **kwargs):
return JsonResponse({'success': False})
现在当表单无效时,form_invalid 方法被调用并返回 JsonResponse 消息,但我更愿意返回特定的表单错误。
我正在尝试找到一种方法来显示employee_form 和address_form 的每个单独的表单错误。有没有办法在form_invalid 方法中进行这种覆盖?
提前谢谢你!
【问题讨论】:
标签: django django-forms django-class-based-views