如何在Django中创建子弹?
我正在尝试SlugField在Django中创建一个。
我创建了这个简单的模型:
from django.db import modelsclass 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