擅长:python、mysql、java
<p>你需要使用slugify函数。</p>
<pre><code>>>> from django.template.defaultfilters import slugify
>>> slugify("b b b b")
u'b-b-b-b'
>>>
</code></pre>
<p>通过重写<code>save</code>方法,可以自动调用<code>slugify</code>:</p>
<pre><code>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)
</code></pre>
<p>请注意,当编辑<code>q</code>字段时,上面的内容将导致您的URL更改,该字段是<a href="http://www.w3.org/Provider/Style/URI.html" rel="noreferrer">can cause broken links</a>。创建新对象时,最好只生成一次slug:</p>
<pre><code>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)
</code></pre>