假设我有一个名为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都是陌生的。
答案 0 :(得分:3)
在您的特定情况下,attr_one是一个局部变量,就像在函数执行完毕后消失的任何python函数中一样。
如果另一方面,您的意思是self.attr_one=...
,则这将是一个类实例属性,一旦对象被销毁,该属性将丢失。也就是说,只有在调用该函数时才创建它,并且只要使用了python对象的同一实例,就可以访问和定义它,但是如果您从头开始从数据库中检索相同的对象,就会迷失方向。
所有这些,我不会覆盖Django模型的__init__
方法。特别是在没有调用super()的情况下。它将抑制核心Django功能,并可能导致错误。