Как сгенерировать slug на основе заголовка сообщения в django?

#python #django #django-models #django-rest-framework #django-views

#python #django #django-модели #django-rest-framework #django-просмотры

Вопрос:

Я работаю над проектом, в котором я хочу создать slug для каждого сообщения на основе его заголовка. Возможно ли сгенерировать slug таким образом, чтобы он был уникальным для сообщения, но не изменится, даже если заголовок сообщения будет изменен? Я использую модель, указанную в файле ‘model.py «. Можете ли вы дать рекомендации о том, как это сделать?

 class Post(models.Model):

    
    username = models.ForeignKey(UserProfile, on_delete=models.CASCADE)
    description = models.CharField(('Description'),max_length=250)
    title = models.CharField(('Content Title'), max_length=250)
    create_date = models.DateTimeField(default = timezone.now)
    image_data = models.ImageField(upload_to='User_Posts', height_field=None, width_field=None, max_length=None)
    slug = (title)

    def __str__(self):
        return self.title
  

Ответ №1:

Я рекомендую ознакомиться с документацией Django для slugify. Для этого вам нужно будет переопределить метод сохранения вашей модели, поэтому ваш новый код, скорее всего, будет выглядеть примерно так:

 from django.utils.text import slugify
slug=models.SlugField()

def save(self,*args,**kwargs):
    self.slug=slugify(self.title)
    super(Post,self).save(*args,**kwargs)
  

Я бы имел в виду уникальный параметр, для которого вы можете установить значение true или false в своем slugfield.