Python Django中的更新函数视图未保存编辑

Python Django中的更新函数视图未保存编辑,python,django,Python,Django,当我在我的电脑前写或编辑一些东西时,它不会保存这些编辑。它重定向到详细视图并显示早期数据。我哪里做错了 我的代码 Models.py from django.db import models from django.template.defaultfilters import slugify # Create your moels here. class Post(models.Model): title = models.CharField(max_length=200) sl

当我在我的电脑前写或编辑一些东西时,它不会保存这些编辑。它重定向到详细视图并显示早期数据。我哪里做错了

我的代码

Models.py

from django.db import models
from django.template.defaultfilters import slugify
# Create your moels here.
class Post(models.Model):
    title = models.CharField(max_length=200)
    slug = models.SlugField(blank=True,default='')
    body = models.TextField()
    created_date = models.DateTimeField(auto_now_add=True,blank=True,null=True)
    def __str__(self):
        return self.title

    def save(self, *args,**kwargs):
        if not self.slug:
            self.slug = slugify(self.title)
            super(Post,self).save(*args,**kwargs)
Forms.py

from .models import Post
from django import forms

class PostForm(forms.ModelForm):
    class Meta:
        model = Post
        fields = ['title','body']
app/url.py

urlpatterns = [ path('post/<int:pk>/edit/',views.edit_view, name = "edit_view")]
模板 edit.html

<form method="post" >
    {% csrf_token %}
    {{form_edit.as_p}}
    <input type="submit" value="ok">
</form>

在您的模型中,仅当实例的slug值未设置时,才调用save方法。您需要像这样重写模型的保存:

def save(self, *args,**kwargs):
    if not self.slug:
        self.slug = slugify(self.title)
    super(Post,self).save(*args,**kwargs)

现在,如果self.slug已填充且为空,则在这两种情况下都将调用super.save。

它现在可以工作了!谢谢您的更正。您能解释一下为什么super语句中错误的缩进导致了这样的错误吗?非常感谢。@chidandananayak超级高手self.save*args,**kwargs实际上是在执行实例保存。只有在非self.slug时才会调用缩进行。但在现有的情况下,这种情况并不真实。另一方面,每次保存实例时都会调用self.save*args、**kwargs,这样实例就会正确更新。
def save(self, *args,**kwargs):
    if not self.slug:
        self.slug = slugify(self.title)
    super(Post,self).save(*args,**kwargs)