【发布时间】:2015-02-26 04:11:37
【问题描述】:
我在使用 django 模型创建独特的 slug 时遇到问题。我想允许管理员用户从管理员的编辑页面更改 slug。当 slug 已经存在时,应该有“slug + _1”、“slug + _2”等。此外,当创建一个新页面并且没有 slug 时,slug 应该是页面标题。我有这个代码,但由于某种原因,管理员一直说“带有这个 Slug 的页面已经存在”。当我添加一个带有已经存在的 slug 的页面时。希望有人可以帮助我
def save(self, *args, **kwargs):
if not self.id and not self.slug:
self.slug = slugify(self.page_title)
else:
self.slug = slugify(self.slug)
slug_exists = True
counter = 1
slug = self.slug
while slug_exists:
try:
slug_exits = Page.objects.get(slug=slug)
if slug_exits == slug:
slug = self.slug + '_' + str(counter)
counter += 1
except:
self.slug = slug
break
super(Page, self).save(*args, **kwargs)
【问题讨论】:
-
你的意思是写
self.slug = self.slug + '_' + str(counter)而不是slug = self.slug + '_' + str(counter)? -
不会覆盖 var
slug,因此它可以搜索 page_1 或 page_2 等。当找不到时,except 应该给self.slug一个 slug。 -
这不是您问题的确切答案,但可能值得一试:pypi.python.org/pypi/django-autoslug
-
谢谢,这样更好