首页 > 解决方案 > 为什么我的提交按钮在 Django 的 updateview 中不起作用?

问题描述

当我单击提交按钮时,它无处可去,什么也不做。你能看出我的错误吗?我想更新department字段和year字段。我也是MultiSelectFielddjango-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")

标签: django

解决方案


它不起作用的原因是因为我在我TeacherForm指定了 3 个字段teacher_type, departmentyear但在我的模板中我只包含了 2 个字段{{ form.department }}{{ form.year }}。我通过在模板中添加另一个字段来修复它,即{{ form.teacher_type }}.


推荐阅读