【问题标题】:Django - UpdateView changes are not saved, success_url is not usedDjango - UpdateView 更改未保存,success_url 未使用
【发布时间】:2021-10-28 07:23:23
【问题描述】:

我认为我有一个非常基本的 UpdateView,但是当我提交表单时对象没有保存。 success_url 永远不会被调用。当我单击Update 按钮时,表单会刷新并且我停留在同一页面上。我可以通过管理员更新对象,所以我相信模型工作正常。我没有收到任何错误。

网址

path('classroomdetail/<uuid:classroom_id>/',
         views.classroomdetail, name='classroomdetail'),
         
path('classedit/<uuid:pk>/', views.ClassroomUpdateView.as_view(), name='classupdate'),

型号

class Classroom(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    user = models.ForeignKey(settings.AUTH_USER_MODEL,
                             on_delete=models.CASCADE)
    classroom_name = models.CharField(max_length=20)
    course = models.ForeignKey(Course, on_delete=models.CASCADE)
    students = models.ManyToManyField(Student)

    class Meta:
        constraints = [models.UniqueConstraint(
            fields=['user', 'classroom_name'], name="unique-user-classroom")]

    def __str__(self):
        return self.classroom_name

观看次数

class ClassroomUpdateView(UpdateView):
    model = Classroom
    fields = ['classroom_name']
    template_name_suffix = '_update'

    success_url = reverse_lazy('gradebook:classroom')

模板

{% extends 'base.html' %} {% load static %} {% block content %}
{% load crispy_forms_tags %}
<div class="container">
  <div class="row">
    <div class="col">
      <h3>This Classroom belongs to {{ classroom.course }}</h3>
    </div>
  </div>

  <div class="row">
    <div class="col-md-3">
      <form class="form-group">
        {% csrf_token %}{{ form|crispy }}
          <input type="submit" class="btn btn-primary mt-2 mb-2" value="Update">
      </form>
    </div>
  </div>
    <div class="row">
      <div class="col-md-3">
        <a href="{% url 'gradebook:classroomdetail' object.pk %}"><div class="ps-2">Cancel</a>
      </div>
    </div>
</div>
{% endblock content %}

【问题讨论】:

    标签: django django-views


    【解决方案1】:

    我的模板中缺少method="post"。正确的行:

    <form method="post" class="form-group">
    

    【讨论】:

      猜你喜欢
      • 2017-06-23
      • 2020-04-15
      • 1970-01-01
      • 2019-06-21
      • 2014-02-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-08
      • 2017-02-18
      相关资源
      最近更新 更多