Bid*_*jhi 1 django django-models
这是我在 models.py 中生成 slug 的代码,
def save(self):
self.slug = slugify(self.title)
super(Post, self).save()
Run Code Online (Sandbox Code Playgroud)
我想检查该 slug 是否已存在于我的数据库中,然后仅将 id 添加到该 slug 中。
我现在能想到的唯一方法是通过这样做在每个 slug 中添加 id,
def save(self):
super(Post, self).save()
if not self.slug:
self.slug = slugify(self.title) + "-" + str(self.id)
self.save()
Run Code Online (Sandbox Code Playgroud)
问题是,它在所有 slugs 中添加了 id。
那么我如何检查由于相同标题而导致的 slug 是否已存在,然后仅将 id 添加到新的 slug 中?
您可以检查是否存在带有 slug 的帖子,然后您可以将 id 添加到 slug。
def save(self):
# calling super so that the instance will get created and self.id will be accessible.
super(Post, self).save()
if not self.slug:
slug = slugify(self.title)
try:
post_obj = Post.objects.get(slug=slug)
slug += "-" + str(self.id)
except Post.DoesNotExist:
pass
self.slug = slug
self.save()
Run Code Online (Sandbox Code Playgroud)
虽然这段代码可以工作。但我更喜欢保留在后/预保存信号模型中创建 slug 的逻辑。
| 归档时间: |
|
| 查看次数: |
1425 次 |
| 最近记录: |