我正在尝试根据人名创建独特的 slug,这些名字会有明显的重复。我的想法是将 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()
我得到错误:
maximum recursion depth exceeded in cmp
我认为这不是最好的方法。
如何使名称在保存时唯一?
请您参考如下方法:
也许你可以使用简单的构造?:
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)
