UpdateView将正确显示模型数据,但不会实际保存更新



我正在尝试让我的UpdateView将当前数据加载到表单中->允许用户进行更改->更新对象并将更改持久化到数据库中。到目前为止,我有这个代码:

class SurveyInitUpdate(UpdateView):
model = SurveyInit
template_name = 'Model/surveyInit.html'
form_class = SurveyInitForm
success_url = reverse_lazy('Model:myModel-home')
def get(self, request, **kwargs):
self.object = SurveyInit.objects.get(user=self.request.user)
form_class = self.get_form_class()
form = self.get_form(form_class)
context = self.get_context_data(object=self.object, form=form)
return self.render_to_response(context)
def get_object(self, queryset=None):
return self.request.user

到目前为止,它将正确加载用户的数据,并允许他们在表单中输入更改,但当用户提交时,它不会更改对象或数据库信息!谢谢你的帮助!

根据请求,这里是我的模板:

{% block body %}
<div class="container-fluid">
<div class="row">
<div class="col-sm-12 col-md-7">
<div class="panel panel-default">
<div class="panel-body">
<h3>Header</h3>
{% if error_message %}
<p><strong>{{ error_message }}</strong></p>
{% endif %}
<form class="form-horizontal" action="" method="post" enctype="multipart/form-data">
{% csrf_token %}
{% include 'Model/form-template.html' %}
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-success">Submit</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>{% endblock %}

Model/form-template.html是一个简单的for循环,它遍历form字段。

我尝试添加这个post方法,但它只创建了一个新实体,而不更新当前实体。

def post(self, request):
form = self.form_class(request.POST)
if form.is_valid():
sub = form.save(commit=False)
sub.user = request.user
sub.save()
return redirect('Model:myModel-home')

更新:我认为不需要重写post方法。

谢谢。

我返回的是User对象,而不是SurveyInit对象(表单的模型(

最新更新