我有代码来创建 slug 自动使用slugify。但是当我编辑标题时,不会用新标题生成。
这是代码model.py
class Tag(models.Model):
title = models.CharField(max_length=50)
slug = models.CharField(max_length=200, null=True, blank=True)
description = models.TextField()
created_date = models.DateTimeField(auto_now_add=True)
published_date = models.DateTimeField(blank=True, null=True)
def publish(self):
self.published_date = timezone.now()
self.save()
def save(self):
if not self.slug:
self.slug = slugify(self.title)
return super(Tag, self).save()
def __str__(self):
return self.title
Run Code Online (Sandbox Code Playgroud)
你能帮忙解决这个问题吗?
在您当前的代码中,仅当 slug 以前不存在时才进行 slugify。仅当您第一次保存时,或标题不存在,或 slug 为空时,才会出现这种情况。
相反,每次更改 slug 时都需要保存它(这又取决于标题)。
因此,将您的保存方法更改为:
def save(self, *args, **kwargs):
self.slug = slugify(self.title)
return super(Tag, self).save(*args, **kwargs))
Run Code Online (Sandbox Code Playgroud)
更新说明:经过一些测试,结果证明最好只传递 args 和 kwargs,因为您无法知道需要处理哪些参数。基于这个答案。
| 归档时间: |
|
| 查看次数: |
2012 次 |
| 最近记录: |