Как автоматически генерировать слаг из моей модели альбома в django 2.0.4 - PullRequest
0 голосов
/ 20 мая 2018

У меня есть поле Album со списком песен

 class Album(models.Model):
    artist = models.CharField(max_length=250)
    album_title = models.CharField(max_length=250)
    genre = models.CharField(max_length=100)
    album_logo = models.CharField(max_length=1000,blank=True)
    slug = models.SlugField(unique=True)

    def __str__(self):
        return self.album_title               

class Song(models.Model):
    album = models.ForeignKey(Album, on_delete=models.CASCADE)
    artist = models.CharField(max_length=250, blank=True)
    file_type = models.CharField(max_length=10)
    song_title = models.CharField(max_length=100)    

    def __str__(self):
        return self.artist

Я хотел бы знать, как генерировать слагов из названия альбома.Я следую учебному пособию, использующему django 1.8, в котором для реализации этой задачи используются регулярные выражения.Но, просматривая документацию, они представили более простой подход ('').Так что вы можете помочь объяснить, как я могу реализовать это для начинающего, чтобы понять не только в этом контексте, но, по возможности, по всем направлениям.Заранее спасибо.

1 Ответ

0 голосов
/ 07 декабря 2018

Django автоматически генерирует слаг из строкового объекта, который вы передаете в поле слаг.из django.utils.text import slugify

class Album(models.Model):
    artist = models.CharField(max_length=250)
    album_title = models.CharField(max_length=250)
    genre = models.CharField(max_length=100)
    album_logo = models.CharField(max_length=1000,blank=True)
    slug = models.SlugField(unique=True)

    def save(self, *args, **kwargs):
        self.slug = slugify(self.album_title)
        super(Album, self).save(*args, **kwargs)

    def __str__(self):
        return self.album_title    


class Song(models.Model):
    album = models.ForeignKey(Album, on_delete=models.CASCADE)
    artist = models.CharField(max_length=250, blank=True)
    file_type = models.CharField(max_length=10)
    song_title = models.CharField(max_length=100)
    slug = models.SlugField(max_length=100, unique=True)

    def save(self, *args, **kwargs):
        self.slug = slugify(self.song_title)
        super(Song, self).save(*args, **kwargs)    

    def __str__(self):
        return self.artist
...