如何在Django中创建子弹?

我正在尝试SlugField在Django中创建一个。

我创建了这个简单的模型:

from django.db import models

class Test(models.Model):

q = models.CharField(max_length=30)

s = models.SlugField()

然后,我这样做:

>>> from mysite.books.models import Test

>>> t=Test(q="aa a a a", s="b b b b")

>>> t.s

'b b b b'

>>> t.save()

>>> t.s

'b b b b'

我在期待b-b-b-b。

回答:

你将需要使用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)

请注意,以上内容将导致你在修改q字段时更改你的URL ,这可能会导致链接断开。创建新对象时最好只生成一次子弹:

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)

以上是 如何在Django中创建子弹? 的全部内容, 来源链接: utcz.com/qa/403548.html

回到顶部