如何在Django中创建一个插件?

问题:

我试图在Django中创建一个SlugField。
我创建了这个简单的模型:

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'
>>>

您可以通过覆盖save方法自动调用slugify

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更改,哪个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)

 
 Code问答: codewenda.com
Stackoverflow:How do I create a slug in Django?

发表评论

电子邮件地址不会被公开。 必填项已用*标注

− 1 = 1