繁体   English   中英

实例属性在数据库中的含义是什么? 对于Django模型

[英]What an instance attribute will represent in database? for a Django model

假设我有一个名为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的新手。

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

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

总而言之,我不会覆盖django模型的__init__方法。 特别是没有调用super()。 它将禁止核心django功能并可能导致错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM