Python 实例属性将在数据库中表示什么?对于Django模型
假设我有一个名为foo的模型:Python 实例属性将在数据库中表示什么?对于Django模型,python,django,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 = mode
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都是新手。在您的特定情况下,attr_one是一个局部变量,就像在任何python函数中一样,一旦函数执行完毕就消失了 另一方面,如果您指的是
self.attr\u one=…
,那么这将是一个类实例属性,一旦对象被销毁,该属性将丢失。也就是说,它仅在调用该函数时创建,只要使用相同的python对象实例,就可以访问和定义它,但如果您从头开始从数据库检索相同的对象,则会丢失它
尽管如此,我不会覆盖django模型的
\uuuu init\uuuu
方法。尤其是在没有调用super()的情况下。它将抑制核心django功能,并可能导致错误 我想你需要重新措辞一下。你的问题究竟是什么还不清楚。也许你也应该加一个例子。请将带有“如果我的问题微不足道,我对python和Django都是新手”的部分移到它自己的句子中,或者完全删除它。attr_one
将仅在init方法中可用。如果您打算使用self.attr\u one
,只要实例没有被垃圾收集,它就在那里。如果你问的是这个问题,它不会在数据库中的任何地方持久化。