Django - 创建模型的新实例
回答
正如Sergey指出的,class Model(**kwargs) 是不正确的,这在Django的文档中是个笔误。
“class”这一部分是他们在写文档时使用的标记格式。
所以,Django文档中真正想表达的是:
创建对象
要创建一个模型的新实例,只需像其他Python类一样实例化它:
Model(**kwargs)
这些关键字参数就是你在模型中定义的字段名称。请注意,实例化一个模型并不会直接影响你的数据库;要做到这一点,你需要调用save()方法。
原问题
我在阅读关于模型实例的Django文档时发现了以下内容:
创建对象
要创建一个模型的新实例,只需像其他Python类一样实例化它:
class Model(**kwargs)
这些关键字参数就是你在模型中定义的字段名称。请注意,实例化一个模型并不会直接影响你的数据库;要做到这一点,你需要调用save()方法。
这两段代码有什么区别?
class Model(**kwargs)
new_model = Model(**kwargs)
我知道第二段代码是用kwargs创建了Model类的新实例。
那第一段代码和它有什么不同呢?在我看来,第一段代码似乎是重新定义了Model类。
2 个回答
0
第一行是定义一个类。
第二行是创建这个类的一个实例。
6
class Model(**kwargs)
不是一个 有效的Python语法,正确的写法应该是这样的:
class Model(SomeBaseClass):
pass
根据格式来看(这一行看起来像个小标题),这很可能是Django文档中的一个错误。
如果你查看一下 这个页面的Sphinx源代码,你会发现“class”其实是Sphinx标记的一部分。他们想表达的是:
要创建一个模型的新实例,只需像其他Python类一样实例化它:
Model(**kwargs)
关键字参数就是你在模型中定义的字段名称。