Django - 创建模型的新实例

1 投票
2 回答
10754 浏览
提问于 2025-04-17 17:05

回答

正如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)

关键字参数就是你在模型中定义的字段名称。

撰写回答