Django未保存表单数据

时间:2019-08-18 14:15:55

标签: python django

我做了一个简单的django测试项目,它是一个简单的帖子列表。我正在尝试添加功能以更新帖子。一切似乎都正常,只是没有将编辑内容保存到数据库中。

我已经检查了清理后的数据,看是否有更新的数据通过,但是,save()函数似乎实际上没有做任何事情。

models.py

class Block(models.Model):
    title = models.CharField(max_length=255)
    slug = models.SlugField(unique=True, max_length=140, null=True, blank=True)
    content = models.TextField()

    def save(self, *args, **kwargs):
        if self.slug is None:
            self.slug = get_unique_slug(self, 'title', 'slug')
            super().save(*args, **kwargs)

    def get_absolute_url(self):
        return reverse("bulkapp:one_view", kwargs={"slug_id": self.slug})

    def __str__(self):
        return self.title

views.py

def edit_block_view(request, slug_id):
    single_block_query = get_object_or_404(Block, slug=slug_id)
    update_form_query = BlockForm(request.POST or None, instance=single_block_query)
    if update_form_query.is_valid():
        update_form_query.save()
        return redirect('bulkapp:one_view', slug_id=slug_id)
    return render(request, 'bulkapp/update.html', {'update_form': update_form_query})
<form class="form-container" method="POST">
  {% csrf_token %}
  {{update_form.as_p}}
  <input type="submit" value="Edit">
</form>

编辑:

forms.py

class BlockForm(forms.ModelForm):
    class Meta:
        model = Block
        fields = [
            "title",
            "slug",
            "content",
        ]

重定向将按预期方式触发,但不会保存任何更改,也不会向控制台写入任何错误消息。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

问题是我的save()函数中super().save(*args, **kwargs)的缩进,如果该段不为null,则缩进不会执行。

相关问题