#python #django #django-views #django-templates #django-2.0
#python #django #django-представления #django-шаблоны #django-2.0
Вопрос:
У меня есть набор форм, и я пытаюсь сохранить его обратно. Но, когда я пытаюсь проверить, работает ли employe_academic_forms.is_valid() и сохранить, проверка всегда завершается неудачей, даже если ничего в наборе форм не было изменено. Я отображаю уже существующие данные с помощью formset и пытаюсь их отредактировать. Я не знаю, где я ошибаюсь. Может кто-нибудь, пожалуйста, помочь?
Вид:
def employedit(request, pk, id):
employ_academic = EmployAcademicInfo.objects.filter(employ_id=pk)
employ_academic_forms = EmployAcademicUpdateFormSet(queryset=employ_academic)
if request.method == 'POST':
employ_academic_forms = EmployAcademicUpdateFormSet(request.POST, queryset=employ_academic)
if employ_academic_forms.is_valid():
user_obj = User.objects.get(id=pk)
name = employ_basic_forms.cleaned_data['name']
email = employ_basic_forms.cleaned_data['email']
user_obj.username=email
user_obj.first_name=name
user_obj.email=email
user_obj.save()
instances = employ_academic_forms.save(commit=False)
print(instances)
for instance in instances:
instance.employ_id = user_obj
instance.save()
return redirect('employ-list')
context = {
'employ_academic_forms':employ_academic_forms,
}
return render(request, 'admins/employ/edit_employ.html', context)
форма:
EmployAcademicUpdateFormSet = modelformset_factory(
EmployAcademicInfo,
exclude = ['employ_id'],
extra=0,
labels = {
'degree': 'Enter Employ Degree',
'last_passing_institution_name': 'Enter Employ Passing Institution',
'last_passing_year': 'Enter Employ Passing Year',
},
widgets = {
'degree' : forms.Select(attrs={'class':'form-control form-control-lg', 'placeholder':'Enter degree'}),
'last_passing_institution_name' : forms.TextInput(attrs={'class':'form-control form-control-lg', 'placeholder':'Enter institution name'}),
'last_passing_year' : forms.DateInput(attrs={'class':'form-control form-control-lg', 'type':'date'}),
},
)
HTML:
{% extends 'base/base.html' %}
{% load static %}
{% load crispy_forms_tags %}
{% block content %}
<div class="card">
<form class="form-horizontal" action="" method="post">
{% csrf_token %}
<div class="card-body">
<div class="card-body">
<div class="form-horizontal">
{{ employAcademicFormSet.management_form }}
{% for form in employ_academic_forms %}
{% for field in form.visible_fields %}
<div class="form-group row">
<label class="col-md-3 col-form-label" for="text-input"><h6>{{ field.label_tag }}</h6></label>
<div class="col-md-9">{{ field }}</div>
</div>
{% endfor %}
{% endfor %}
</div>
</div>
</div>
<div class="card-footer">
<button class="btn btn-lg btn-primary" type="submit">Submit</button>
</div>
</form>
</div>
{% endblock %}
Комментарии:
1. Вы отображали ошибки формы?
2. Если метод POST, почему вы
user_obj = User.objects.get(id=pk)
? Я считаю, что эта строка должна бытьuser_obj = form.save(commit=False)
.3. когда я выполняю печать (employe_academic_forms.errors), ошибок не отображается