我的更新视图有问题,但我不知道为什么会发生。因此,当我尝试使用UpdateView更新对象时,不会显示任何错误,表明它无法正常工作,而是将更改的数据传递到url来重新加载页面:
“ [[11 / Dec / 2018 11:49:20]”获取/ home / update / vacation / 421?csrfmiddlewaretoken = Op55u8r2GG2uyDjIvW2rstfedeU646ZkrJsmUOC6824rRO5W5NTT4koNwNCIBmof&poste_travail = poste + test3
我试图覆盖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 %}
答案 0 :(得分:1)
您没有为表单设置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 %}