【发布时间】:2020-02-25 13:11:47
【问题描述】:
我有一个简单的博客,其中帖子模型包含一个预填充帖子标题的 slug 字段。我想知道当用户在 viewUpdate 中更新帖子标题时如何在后台更新此 slug:
models.py
class Post(models.Model):
title = models.CharField(max_length=150)
content = models.TextField()
date = models.DateTimeField(auto_now_add=True)
author = models.ForeignKey(
CustomUser,
on_delete=models.CASCADE
)
slug = models.SlugField(unique=True)
def get_absolute_url(self):
return reverse('post_detail', kwargs={'slug': self.slug})
def save(self, *args, **kwargs):
self.slug = self.slug or slugify(self.title)
super().save(*args, **kwargs)
urls.py
urlpatterns = [
path('post/<slug:slug>/', views.PostDetailView.as_view(), name='post_detail'),
]
views.py
class PostUpdateView(UpdateView):
model = Post
fields = ['title', 'content', 'tags']
我认为我应该在 view.py 中添加其他内容以更新 slug,但在谷歌搜索数小时后,我找不到它。
如果您需要更多信息,请告诉我。这是一个非常简单的问题,所以我不确定是否应该提供其他任何内容。
【问题讨论】:
-
将
self.slug = self.slug or slugify(self.title)更改为self.slug = slugify(self.title) -
那行得通,现在我知道模型.py 中的 save() 在帖子更新时被激活。谢谢!
标签: django django-views slug