我做了一个简单的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",
]
重定向将按预期方式触发,但不会保存任何更改,也不会向控制台写入任何错误消息。任何帮助将不胜感激。
答案 0 :(得分:0)
问题是我的save()函数中super().save(*args, **kwargs)
的缩进,如果该段不为null,则缩进不会执行。