How to create a unique slug in Django

后端 未结 12 566
栀梦
栀梦 2020-12-04 22:17

I am trying to create a unique slug in Django so that I can access a post via a url like this: http://www.example.com/buy-a-new-bike_Boston-MA-02111_2

The relevant m

12条回答
  •  天涯浪人
    2020-12-04 22:45

    This is a simple implementation that generate the slug from the title, it doesn't depend on other snippets:

    from django.template.defaultfilters import slugify
    
    class Article(models.Model):
        ...
        def save(self, **kwargs):
            if not self.slug:
                slug = slugify(self.title)
                while True:
                    try:
                        article = Article.objects.get(slug=slug)
                        if article == self:
                            self.slug = slug
                            break
                        else:
                            slug = slug + '-'
                    except:
                        self.slug = slug
                        break
    
            super(Article, self).save()
    

提交回复
热议问题