CreateView创建两个模型对象

时间:2018-08-10 23:27:46

标签: python django django-views create-view

我创建了一个Form,用户在其中设置了一个Alarm对象。 Alarm对象按预期方式保存到数据库中。但是,问题在于:另一个仅包含Form中完成的信息的对象也保存到数据库中。

据我了解,form_valid()的{​​{1}}保存了表单。我尝试了another query中建议的两种解决方案,但均未成功。我怀疑该问题是由CreateView中的return super().form_valid(form)Alarm.objects.create()引起的。

Views.py

create_alarm_object()

1 个答案:

答案 0 :(得分:1)

您已正确调试。对super的{​​{1}}调用和方法form_valid正在创建两个对象。

如您在form_valid method implementation中所见,它保存表单并使用create_alarm_object返回一个HttpResponseRedirect对象。

要么不重写success_url方法,要么使用以下代码。

解决方案

form_valid

编辑

更新def form_valid(self, form): self.create_alarm_object(self.request, form) return HttpResponseRedirect(self.get_success_url()) 方法以设置create_alarm_object并删除多余的self.object调用。

save