【问题标题】:Django - create a new instance of a modelDjango - 创建模型的新实例
【发布时间】:2013-02-11 02:08:34
【问题描述】:

回答

正如 Sergey 指出的那样,class Model(**kwargs) 是无效的,并且是 Django 文档中的错字。
“类”部分来自他们编写时使用的标记。

因此,它们在 Django 文档中的实际含义是:

创建对象

要创建模型的新实例,只需像任何实例一样实例化它 其他 Python 类:

模型(**kwargs)

关键字参数只是您拥有的字段的名称 在您的模型上定义。请注意,以任何方式实例化模型 触及您的数据库;为此,您需要 save()。




原始问题

我在阅读Django Docs about Model instances 时发现了以下内容:

创建对象

要创建模型的新实例,只需像任何实例一样实例化它 其他 Python 类:

类模型(**kwargs)

关键字参数只是您拥有的字段的名称 在您的模型上定义。请注意,以任何方式实例化模型 触及您的数据库;为此,您需要 save()。


这两个代码有什么区别?

class Model(**kwargs)
new_model = Model(**kwargs)


我知道第二个使用 kwargs 创建了 Model 类的新实例。
第一个和它不一样吗?在我看来,它似乎是重新定义了 Model 类。

【问题讨论】:

  • 第一个不正确

标签: python django django-models python-2.7


【解决方案1】:

class Model(**kwargs) 不是valid Python syntax,后者看起来像

class Model(SomeBaseClass):
    pass

从格式来看(该行看起来像一个副标题),这一定是 Django 文档中的错误。

如果您查看Sphinx source of the page,您会发现“类”实际上是Sphinx 标记的一部分。他们的意思是

要创建模型的新实例,只需像任何实例一样实例化它 其他 Python 类:

Model(**kwargs)

关键字参数只是您已设置的字段的名称 在您的模型上定义。

【讨论】:

  • 谢谢,谢尔盖,感谢您抽出宝贵时间就这个问题写出明确的答案。
【解决方案2】:

第一行定义了一个类。 第二行定义了一个类的实例。

【讨论】:

  • 第一行无效。
  • 是的,我知道,但不要粗鲁,显然 OP 完全不知道 OOP 是什么。
  • Brandon,我正在学习 OOP,我的问题是这个过程的一部分。据我所知,在 Python 中,我们通过“class ClassName(AncestorName): class_definition”定义一个类,并通过“ClassName(**kwargs)”创建一个类的实例。我的问题所指的是我以前从未见过的东西。我在网上和SO上搜索了它,因为我没有找到答案,所以我在这里问了它。如果它确实是 Django 文档中的一个错字,那么我相信我的问题对任何可能对此感到困惑的人都有用。无论如何,我会用答案编辑它。
  • 很抱歉,这很简单,但在深入了解 Django 之前,您确实应该熟悉 Python 的基础知识。定义和实例化类是 Python 101。
  • 我正在努力,伙计。但是,无论我的知识如何,我仍然相信这个问题(与答案一起完成)对于遇到此类错字的任何人都会有用。
猜你喜欢
  • 2017-03-04
  • 1970-01-01
  • 1970-01-01
  • 2021-03-09
  • 1970-01-01
  • 1970-01-01
  • 2023-02-11
  • 2021-06-19
  • 2013-03-25
相关资源
最近更新 更多