【问题标题】:Django Models Option SaveDjango 模型选项保存
【发布时间】:2017-06-16 10:03:49
【问题描述】:

我只是想问一下,在这个模型中,“保存”方法是如何工作的? 我只是想把它添加到我的代码中,但我真的不知道它是如何工作的.. 如果模型中没有 id,这些行可以帮助我保存 slugify? 非常感谢。

class Category(models.Model):

    name = models.CharField(max_length=50)
    slug = models.SlugField(editable=False)

    def save(self, *args, **kwargs):
        if not self.id:
            self.slug = slugify(self.name)
        super(Category, self).save(*args, **kwargs)

    def __unicode__(self):
        return self.name

【问题讨论】:

    标签: django class models


    【解决方案1】:

    简短回答:这可以帮助您将 slug 添加到新对象中。

    要检查对象是否是新的,请执行以下验证:

    if not self.id:
    

    仅当 self.id 为空时才返回 True。考虑到id 是主键,它只能用于新对象。

    self.slug = slugify(self.name)
    

    现在您使用 slugify util 将 name 字段转换为 slug:

    如果 allow_unicode 为 False(默认),则转换为 ASCII。将空格转换为连字符。删除不是字母数字、下划线或连字符的字符。转换为小写。还会去除前导和尾随空格。

    例如:

    slugify(值)

    如果值为“Joel is a slug”,则输出将为“joel-is-a-slug”。

    最后你打电话

    super(Category, self).save(*args, **kwargs)
    

    保存对象。

    【讨论】:

    • 最好的解释非常感谢@neverwalkaloner
    • 那么在模型上执行此操作是一个好习惯吗? @neverwalkaloner
    • @soultaker 非常欢迎您!是的,这是常见的做法。
    • 非常感谢,如果我再次使用我的代码或遇到问题,我会问你一些其他问题,我是新手。 @neverwalkaloner
    猜你喜欢
    • 2016-06-06
    • 1970-01-01
    • 2016-02-21
    • 2013-05-13
    • 1970-01-01
    • 2018-10-07
    • 2019-10-06
    • 2019-08-22
    • 2016-01-04
    相关资源
    最近更新 更多