我创建了一个Form
,用户在其中设置了一个Alarm
对象。 Alarm
对象按预期方式保存到数据库中。但是,问题在于:另一个仅包含Form
中完成的信息的对象也保存到数据库中。
据我了解,form_valid()
的{{1}}保存了表单。我尝试了another query中建议的两种解决方案,但均未成功。我怀疑该问题是由CreateView
中的return super().form_valid(form)
或Alarm.objects.create()
引起的。
Views.py
create_alarm_object()
答案 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