【问题标题】:django model name in save() methodsave() 方法中的 django 模型名称
【发布时间】:2017-05-15 09:22:01
【问题描述】:

我想在 save() 方法中获取模型的名称。我想更正这一行

self.slug = create_slug(self.model_object, self.slug)

这里我需要获取模型名称self.model_name。这里model course继承了basemodel,但我需要将model名称设为course。我怎样才能做到这一点?有人请帮帮我。

class BaseModel(models.Model):
    slug = models.SlugField(unique=True, max_length=500)

    def save(self, *args, **kwargs):
        if self._state.adding == True:
            if not self.slug:
                self.slug = create_slug(self.model_object, self.slug)

        return super(BaseModel, self).save(*args, **kwargs)

    class Meta:
        abstract = True


class Course(BaseModel):
    title = models.CharField(max_length=128)

    class Meta:
        db_table = "course"

【问题讨论】:

    标签: python django python-2.7 django-models


    【解决方案1】:

    您可以通过使用__class__ 魔法属性来实现此目的

    self.slug = create_slug(self.__class__, self.slug)
    

    【讨论】:

    • 'str' 对象没有属性 'objects' 。我收到了这个错误。它将该模型作为字符串。
    • @tstudent 我在您粘贴的代码中没有看到任何提及objects。所以我无法解释。更新您的问题或创建另一个问题。
    • 而不是 self.__class__.__name__。我试过 self.__class__ 和它的工作。谢谢..
    猜你喜欢
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 2021-02-28
    • 2019-08-18
    • 2019-06-10
    • 2012-05-19
    • 2022-11-05
    相关资源
    最近更新 更多