django - 为什么我的提交按钮在 Django 的 updateview 中不起作用?
问题描述
当我单击提交按钮时,它无处可去,什么也不做。你能看出我的错误吗?我想更新department
字段和year
字段。我也是MultiSelectField
从django-multiselectfield
第三方使用的。表单显示正确,但提交按钮不起作用。
这是我的models.py
class Teacher(models.Model):
type_choice = (('Full Time', _('Full Time')), ('Part Time', _('Part Time')))
departments = (
('TC', 'Foundation Year'), ('GIC', 'Software Engineering'),
('GEE', 'Electrical Engineering'), ('GIM', 'Mechanical Engineering'),
('OAC', 'Architecture'), ('OTR', 'Telecom'), ('GCI', 'Civil Engineering'),
('GGG', 'Geotechnical Engineering'), ('GRU', 'Rural Engineering')
)
years = (
('year1', 'Year1'), ('year2', 'Year2'), ('year3', 'Year3'),
('year4', 'Year4'), ('year5', 'Year5')
)
user = models.OneToOneField(CustomUser, on_delete=models.CASCADE, primary_key=True)
teacher_type = models.CharField(max_length=50, choices=type_choice)
department = MultiSelectField(choices=departments)
year = MultiSelectField(choices=years)
def __str__(self):
return '%s %s' % (self.user.email, self.teacher_type)
表格.py
class TeacherForm(forms.ModelForm):
class Meta:
model = Teacher
fields = ['teacher_type', 'department', 'year']
视图.py
@method_decorator(teacher_required, name="dispatch")
class TeacherDepartEditView(LoginRequiredMixin, UpdateView):
model = Teacher
login_url = "/"
form_class = TeacherForm
template_name = "attendance/content/teacher/teacher_dep_edit.html"
def get_success_url(self):
return reverse('teacher_info')
模板
<form method="POST">
{% csrf_token %}
<div class="row mt-3">
<div class="col-md-6">
<label>Choose department ( can choose more than one )</label>
{{ form.department}}
</div>
<div class="col-md-6">
<label>Choose Year ( can choose more than one )</label>
{{ form.year }}
</div>
</div>
<button class="btn btn-cyan" type="submit" > Edit </button>
</form>
这是更新视图的 urls.py
path('teacher-info/<int:pk>/dep-update/', TeacherDepartEditView.as_view(), name="teacher_dep_update")
解决方案
它不起作用的原因是因为我在我TeacherForm
指定了 3 个字段teacher_type
, department
,year
但在我的模板中我只包含了 2 个字段{{ form.department }}
和{{ form.year }}
。我通过在模板中添加另一个字段来修复它,即{{ form.teacher_type }}
.