我有一个带有歌曲列表的专辑字段
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
我想知道如何从专辑标题中生成slu ..我正在使用django 1.8的教程,该教程使用正则表达式来实现此任务。但是通过查看文档,他们引入了一种更简单的方法('')。 所以你能帮我解释一下如何实现它,让初学者不仅可以在这种情况下理解,而且如果可能的话,也可以在整个过程中理解。 提前谢谢。
答案 0 :(得分:1)
Django会根据传递给Slug字段的字符串对象自动生成Slug。 从django.utils.text导入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