Вам нужно будет использовать slugify функцию.
>>> from django.template.defaultfilters import slugify
>>> slugify("b b b b")
u'b-b-b-b'
>>>
Вы можете позвонить slugify
автоматически путем переопределения метода save
:
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)
Имейте в виду, что выше, будет вызывать ваш URL, чтобы измениться, когда q
поле редактируется, который can cause broken links. Это может быть предпочтительным, чтобы генерировать слизняк только один раз, когда вы создаете новый объект:
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)
Я пришел сюда из «танго с джанго»;) – kmonsoor