1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
article
slug = models.SlugField(max_length=100, unique=True)
def get_absolute_url(self):
return reverse("article:detail", kwargs={"slug":self.slug})
def create_slug(instance,new_slug=None):
slug=slugify(instance.name)
if new_slug is not None:
slug=new_slug
qs=Article.objects.filter(slug=slug).order_by("-id")
exists=qs.exists()
if exists:
new_slug="%s-%s" %(slug,qs.first().id)
return create_slug(instance,new_slug=new_slug)
return slug
def pre_save_article_receive(sender, instance,*args,**kwargs):
if not instance.slug:
instance.slug= create_slug(instance)
pre_save.connect(pre_save_article_receive, sender=Article) |