我的更新视图有问题,但我不知道为什么会这样。因此,当我尝试使用 UpdateView 更新对象时,我没有收到任何错误显示它不起作用并重新加载页面,而是将更改后的数据传递给 url :
"[11/Dec/2018 11:49:20] "GET /home/update/vacation/421?csrfmiddlewaretoken=Op55u8r2GG2uyDjIvW2rstfedeU646ZkrJsmUOC6824rRO5W5NTT4koNwe2if0auxt4koNwe2if0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2018
我试图覆盖 form_invalid 和 fom_valid 以了解发生了什么,但它没有打印任何内容
有谁知道为什么这不起作用?
class VacationUpdate(LoginRequiredMixin, UpdateView):
login_url = 'login'
redirect_field_name = 'redirect_to'
form_class = VacationUpdateForm
model = Vacation
template_name = 'chiffrage/forms/vacation_update.html'
pk_url_kwarg = 'vacation_id'
def form_invalid(self, form):
print(form.changed_data)
def form_valid(self, form):
print(form.data)
vacation = form.save(commit=False)
vacation.updated_by = self.request.user
vacation.save()
return super().form_valid(form)
def get_success_url(self):
return HttpResponseRedirect(reverse('marge_prix', args=(
self.object.version_contrat.contrat.site.client.slug(),
self.object.version_contrat.contrat.site.client.pk,
self.object.version_contrat.contrat.site.slug(),
self.object.version_contrat.contrat.site.pk,
self.object.version_contrat.contrat.slug(),
self.object.version_contrat.contrat.id,
self.object.version_contrat.slug(),
self.object.version_contrat.id)))
class VacationUpdateForm(forms.ModelForm):
class Meta:
model = Vacation
fields = ['poste_travail', 'taux_marge']
path('update/vacation/<int:vacation_id>', views_class.VacationUpdate.as_view(), name='vacation_class_update'),
path('clients/<slug:client_name>,<int:client_id>/<slug:site_name>,<int:site_id>/<slug:contrat_slug>,<int:contrat_id>/<slug:version_slug>,<int:version_id>/prix', views.vacation_add,
name='marge_prix'),
{% extends 'base.html' %}
{% block title %} {{ request.user }}{% endblock %}
{% block ligne-titre %}{{ client }}{% endblock %}
{% block sans-div %}
<div class="main container-fluid col-8">
<form class="form-group">
{% csrf_token%}
<table class="table table-sm table-bordered">
{{ form.as_table }}
<tr>
<td colspan="2"><input class="align-self-center btn btn-secondary " type="submit" value="Nouveau"></td>
</tr>
</table>
</form>
</div>
{% endblock %}
您没有method
适合您的表单的设置。这意味着表单使用的是默认的GET
提交方法。
尝试更改vacation_update.html
为:
{% extends 'base.html' %}
{% block title %} {{ request.user }}{% endblock %}
{% block ligne-titre %}{{ client }}{% endblock %}
{% block sans-div %}
<div class="main container-fluid col-8">
<form class="form-group" method="post">
{% csrf_token%}
<table class="table table-sm table-bordered">
{{ form.as_table }}
<tr>
<td colspan="2"><input class="align-self-center btn btn-secondary " type="submit" value="Nouveau"></td>
</tr>
</table>
</form>
</div>
{% endblock %}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句