从用户生成slugfield

时间:2014-04-23 06:53:16

标签: python django decorator slug

这是我的models.py文件

class UserProfile(models.Model):
    user = models.ForeignKey(User, unique=True)
    toc = models.BooleanField(default=False)
    dob = models.DateField(blank=False, null=True)
    street_address = models.CharField(max_length=100, blank=False, null=False)
    city = models.CharField(max_length=100, blank=False, null=False)
    zip_code = models.PositiveIntegerField(blank=False, null=True)
    state = models.CharField(max_length=50, choices=states)
    slug = models.SlugField()
    def save(self, **kwargs):
        slug = '%s' % (self.user.username)
        unique_slugify(self, slug)
        super(UserProfile, self).save()
User.profile = property(lambda u: UserProfile.objects.get_or_create(user=u)[0])

我想从User中的用户名生成我的UserProfile.slug。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

除非你有充分的理由自己写一个,我建议使用django提供的slugify()方法,并按照以下方式做一些事情:

def save(self, **kwargs):
    from django.utils.text import slugify

    self.slug = slugify(self.user.username)
    super(UserProfile, self).save()

这假设您使用的是1.6。唯一可能改变的是你从哪里导入。他们喜欢经常改变我注意到的事情。

文档:https://docs.djangoproject.com/en/dev/ref/utils/#django-utils-text