:
class EmployeeUpdateView(LoginRequiredMixin, UpdateView):
model = Employee
template_name = "employee_update.html"
form_class = EmployeeUpdateForm
来自forms.py:
class EmployeeForm(forms.ModelForm):
departments = DepartmentChoiceField()
def __init__(self, *args, **kwargs):
super(EmployeeForm, self).__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.form_class = "form-vertical"
self.helper.form_tag = False
self.helper.layout = Layout(
Div(Field('first_name'), css_class="row col-md-5 emp-firstname"),
Div(Field('last_name'), css_class="row col-md-5"),
Div(Field('title'), css_class="row col-md-10"),
Div(Field('email'), css_class="row col-md-10"),
Div(Field('phone_number'), css_class="row col-md-10"),
Div(Field('slack_username'), css_class="row col-md-10"),
Div(Field('department'), css_class="row col-md-5"),
Div(
Div(Field('facility_agent', template="field_checkbox_awesome.html"), css_class="row checkbox checkbox-doorman"),
Div(Field('company_agent', template="field_checkbox_awesome.html"), css_class="row checkbox checkbox-doorman"),
Div(Field('contact_for_company_delivery', template="field_checkbox_awesome.html"), css_class="row checkbox checkbox-doorman"),
Div(Field('contact_for_facility_delivery', template="field_checkbox_awesome.html"), css_class="row checkbox checkbox-doorman"),
css_class="row col-md-5 emp-department"),
Div(Field('mugshot'), css_class="row col-md-10"),
Div(Field('company'), css_class="row col-md-10"),
Div(Field('facility'), css_class="row col-md-10")
)
self.request = kwargs.pop('request', None)
self.fields['first_name'].label = "first name"
self.fields['last_name'].label = "last name"
self.fields['title'].label = "title"
self.fields['email'].label = "email"
self.fields['phone_number'].label = "phone #"
self.fields['slack_username'].label = "slack name"
self.fields['facility_agent'].label = "facility agent"
self.fields['company_agent'].label = "company agent"
self.fields['contact_for_company_delivery'].label = "contact for company delivery"
self.fields['contact_for_facility_delivery'].label = "contact for facility delivery"
class Meta:
model = Employee
class EmployeeCreateForm(EmployeeForm):
def __init__(self, *args, **kwargs):
super(EmployeeCreateForm, self).__init__(*args, **kwargs)
class EmployeeUpdateForm(EmployeeForm):
def __init__(self, *args, **kwargs):
super(EmployeeUpdateForm, self).__init__(*args, **kwargs)
employee = Employee.objects.filter(pk=self.instance.pk).first()
self.fields['departments'].set_company(employee.department_id)
和urls.py:
url(r'employees/(?P<pk>[0-9]+)/$', EmployeeUpdateView.as_view(), name="employee_update"),
如果我注释掉&#34; form_class =&#34;在views.py中输入,保存编辑内容。如果我把它插入,编辑不是。 这些字段肯定是通过POST发送的,并且控制台上没有记录错误。
答案 0 :(得分:2)
由于form_valid
没有被调用,这意味着问题不在于您的表单不能保存,而是您所拥有的数据传递给表单没有通过验证。 Take a look here at the docs
要调试此问题,请先在您的视图中添加form_invalid()
方法,或在表单中添加custom clean()
method,然后查看该表单未进行验证的原因。即,查看表单实例中的错误并查看显示给您的内容。这应该回答你的问题。
还有一些您正在调用的方法可能会或可能不会使表单在其实例化之前无效。我不确定set_company
方法在字段上的作用,但可能会出现错误,导致您的表单无法正确设置。