Python Django中的更新函数视图未保存编辑
当我在我的电脑前写或编辑一些东西时,它不会保存这些编辑。它重定向到详细视图并显示早期数据。我哪里做错了 我的代码 Models.pyPython 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
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)