我试图在Django中创建一个SlugField
我创建了这个简单的模型:
来自django.db导入模型的
类别测试(models.Model):
q=models.CharField(最大长度=30)
s=模型。SlugField()
然后我会这样做:
>&燃气轮机&燃气轮机;从mysite.books.models导入测试
&燃气轮机&燃气轮机&燃气轮机;t=测试(q=“aa”,s=“b”)
&燃气轮机&燃气轮机&燃气轮机;t、
“b”
&燃气轮机&燃气轮机&燃气轮机;t、 保存()
&燃气轮机&燃气轮机&燃气轮机;t、
“b”
我期待着b-b-b-b
您需要使用slagify函数
>&燃气轮机&燃气轮机;从django.template.defaultfilters导入slugify
&燃气轮机&燃气轮机&燃气轮机;slagify(“b”)
u'b-b-b-b'
&燃气轮机&燃气轮机&燃气轮机;
您可以通过覆盖save方法自动调用slagify:
类测试(models.Model):
q=models.CharField(最大长度=30)
s=模型。SlugField()
def保存(自身、*args、**kwargs):
self.s=slagify(self.q)
超级(测试,自我)。保存(*args,**kwargs)
请注意,当编辑q字段时,上述内容将导致您的URL发生更改,这可能会导致断开链接。创建新对象时,最好只生成一次段塞:
类测试(models.Model):
q=models.CharField(最大长度=30)
s=模型。SlugField()
def保存(自身、*args、**kwargs):
如果不是self.id:
#新创建的对象,所以设置slug
self.s=slagify(self.q)
超级(测试,自我)。保存(*args,**kwargs)