How to create a unique slug in Django

后端 未结 12 562
栀梦
栀梦 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:55

    Hi can you tried this function

    class Training(models.Model):
        title = models.CharField(max_length=250)
        text = models.TextField()
        created_date = models.DateTimeField(
        auto_now_add=True, editable=False, )
        slug = models.SlugField(unique=True, editable=False, max_length=250)
    
        def __unicode__(self):
           return self.title
    
        def save(self, *args, **kwargs):
           self.slug =get_unique_slug(self.id,self.title,Training.objects)
           return super(Training, self).save(*args, **kwargs)
    
    def get_unique_slug(id,title,obj):
        slug = slugify(title.replace('ı', 'i'))
        unique_slug = slug
        counter = 1
        while obj.filter(slug=unique_slug).exists():
           if(obj.filter(slug=unique_slug).values('id')[0]['id']==id):
               break
           unique_slug = '{}-{}'.format(slug, counter)
           counter += 1
        return unique_slug
    

提交回复
热议问题