实例属性将在数据库中代表什么?对于Django模型

时间:2019-03-15 12:29:00

标签: python django

假设我有一个名为foo的模型:

class Foo(models.Model):
    col_one = models.SomeFiled(...)
    col_two = models.SomeFiled(...)

现在我知道col_one和col_two将代表数据库中的列,但是如果我将 init ()方法添加到模型中,则像这样:

class Foo(models.Model):
    col_one = models.SomeFiled(...)
    col_two = models.SomeFiled(...)
    def __init__(self):
        attr_one=value_one

现在,每个Foo实例都将代表数据库中的一条记录,但是该特定记录将代表什么attr_one,就像与该记录相关联的元数据一样吗?第一次创建对象时,它将存储在数据库中吗?

如果我的问题微不足道,我对python和Django都是陌生的。

1 个答案:

答案 0 :(得分:3)

在您的特定情况下,attr_one是一个局部变量,就像在函数执行完毕后消失的任何python函数中一样。

如果另一方面,您的意思是self.attr_one=...,则这将是一个类实例属性,一旦对象被销毁,该属性将丢失。也就是说,只有在调用该函数时才创建它,并且只要使用了python对象的同一实例,就可以访问和定义它,但是如果您从头开始从数据库中检索相同的对象,就会迷失方向。

所有这些,我不会覆盖Django模型的__init__方法。特别是在没有调用super()的情况下。它将抑制核心Django功能,并可能导致错误。