Bạn sẽ cần sử dụng hàm slugify.
>>> from django.template.defaultfilters import slugify
>>> slugify("b b b b")
u'b-b-b-b'
>>>
Bạn có thể gọi slugify
tự động bằng cách ghi đè save
phương thức:
class Test(models.Model):
q = models.CharField(max_length=30)
s = models.SlugField()
def save(self, *args, **kwargs):
self.s = slugify(self.q)
super(Test, self).save(*args, **kwargs)
Xin lưu ý rằng những điều trên sẽ khiến URL của bạn thay đổi khi q
trường được chỉnh sửa, điều này có thể gây ra các liên kết bị hỏng . Có thể tốt hơn là chỉ tạo sên một lần khi bạn tạo một đối tượng mới:
class Test(models.Model):
q = models.CharField(max_length=30)
s = models.SlugField()
def save(self, *args, **kwargs):
if not self.id:
# Newly created object, so set slug
self.s = slugify(self.q)
super(Test, self).save(*args, **kwargs)