通用 UpdateView 不适用于 slug

Generic UpdateView isn't working with slug

我是 django.I 的新手,我正在尝试使用通用 UpdateView 更新 post。但是 post 在填满 form.Im 之后并没有更新通过 slug url 访问更新视图。

我的模特:

class Post(models.Model):
title = models.CharField(max_length=60)
post_body = models.TextField()
time_posted = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete= models.CASCADE)
slug = models.SlugField(null=False,unique=True)

def __str__(self):
    return self.title

def get_absolute_url(self):
    return reverse('postdetail', kwargs={'slug': self.slug})

def save(self,*args,**kwargs):
    if not self.slug:
        author_id = str(self.author.id)
        self.slug = slugify(self.title +'-'+author_id)
        return super().save(*args, **kwargs)

我的看法:

class postupdate(LoginRequiredMixin,UserPassesTestMixin,UpdateView):
model = Post
fields = ['title','post_body']

def form_valid(self, form):
    form.instance.author = self.request.user
    return super().form_valid(form)

def test_func(self):
    post = self.get_object()
    if self.request.user == post.author:
        return True
    else:
        return False

我的url:

path('post/<slug:slug>/updatepost/', postupdate.as_view(),name = 'updatepost'),

save() 方法似乎没有被调用每次

class Post(models.Model):
    # rest of your code

    def save(self, *args, **kwargs):
        if not self.slug:
            author_id = str(self.author.id)
            self.slug = slugify(self.title + '-' + author_id)

        <b>return super().save(*args, **kwargs) # outside the `if...` clause</b>