我在使用django模型创建独特的slug时遇到了一个问题。我想允许管理员用户从管理员的编辑页面更改slug。当一个slug已经存在时,应该有“slug+\u 1”、“slug+\u 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)
试试这个。我没有亲自测试。但它应该给你一个想法。在
你的代码有三个问题。在
else
表示self.id
或{self.id
不为空,self.slug
为空,self.slug
将不会得到值。在slug_exits == slug
将始终为False,因为slug_exits
是一个模型对象,slug
是一个字符串。这就是你得到错误的原因!相关问题 更多 >
编程相关推荐