我正在尝试从人名创建独特的slu ,,这将有明显的重复。我的想法是将id作为唯一标识符添加到slug中。问题是在保存完成之前不会生成唯一ID。
这就是我的尝试:
def save(self, *args, **kwargs):
if getattr(self, 'name', True):
if not self.pk:
matching_slugs = Entity.objects.filter(slug=slugify(self.name))
print matching_slugs
if len(matching_slugs) > 0:
self.slug=slugify(self.name+' temp')
elif len(matching_slugs) == 0:
self.slug=slugify(self.name)
super(Entity, self).save(*args, **kwargs)
self.slug=slugify(self.name+' '+str(self.id))
self.save()
我收到错误:
cmp中超出了最大递归深度
我认为这不是最好的方法。
如何在保存时使名称唯一?
答案 0 :(得分:2)
可能你可以使用简单的结构吗?:
import uuid
def save(self, *args, **kwargs):
if not self.slug:
self.slug = "%s.%s" % (self.name , uuid.uuid4())
super(Entity, self).save(*args, **kwargs)
答案 1 :(得分:0)
我将save()更改为:
super(Entity, self).save(*args, **kwargs)
self.slug=slugify(self.name+' '+str(self.id))
super(Entity, self).save(*args, **kwargs)