我有一个简单的博客,其中的帖子模型包含一个预填充了帖子标题的子词字段。我想知道当用户在viewUpdate中更新帖子标题时如何在后台更新此条:
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中添加其他内容,以便更新该条,但经过数小时的搜索之后,我找不到了。
如果您需要更多信息,请告诉我。这是一个非常简单的问题,所以我不确定是否应该提供其他任何东西。
答案 0 :(得分:0)
您可以将echo -n "RELEASE-1.0.0" | sed 's/^RELEASE-\(.*\)$/\1/'
方法更改为:
save
话虽如此,改变弹头本身并不是一个好主意。 URL中通常使用段塞。因此,这意味着,如果class Post(models.Model):
# …
def save(self, *args, **kwargs):
self.slug = slugify(self.title)
super().save(*args, **kwargs)
的URL例如由用户添加了书签,而标题随后更改,则该URL将不再起作用。在此之前,通常不应修改。实际上,在大多数内容管理系统(CMS)中,该特性不会改变,您可以查看URL来查看文章的原始标题。