I have an Album field with a list of Songs
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
I would like to know how to generate slugs from the album title. I am following a tutorial which is using django 1.8 which uses regular expressions to implement this task. But from looking through the documentation they have introduced a more simpler approach (”). So can you help explain how I can implement it for a beginner to understand not only in this context but if possible across board. Thanks in advance.
Advertisement
Answer
Django autogenerates the slug from the string object you pass to the slug field.
# Import slugify to generate slugs from strings from 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