1

回答

Sergey が指摘したように、クラス Model(**kwargs)は無効であり、Django ドキュメントのタイプミスです。
「クラス」の部分は、作成時に使用したマークアップに由来します。

したがって、Django のドキュメントで実際に意味されたのは次のとおりです。

オブジェクトの作成

モデルの新しいインスタンスを作成するには、他の Python クラスと同じようにインスタンス化します。

モデル(**kwargs)

キーワード引数は、モデルで定義したフィールドの名前です。モデルをインスタンス化してもデータベースには影響しないことに注意してください。そのためには、save() が必要です。




Model instances に関する Django Docs

を読んでいるときに、次のことを見つけた 元の質問:

オブジェクトの作成

モデルの新しいインスタンスを作成するには、他の Python クラスと同じようにインスタンス化します。

クラスモデル(**kwargs)

キーワード引数は、モデルで定義したフィールドの名前です。モデルをインスタンス化してもデータベースには影響しないことに注意してください。そのためには、save() が必要です。


これら2つのコードの違いは何ですか?

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


2 つ目は、kwargs を使用してクラス Model の新しいインスタンスを作成することを知っています。
最初のものはそれとは異なりますか?私には、モデルクラスを再定義しているように思えます。

4

2 に答える 2

6

class Model(**kwargs)有効な Python 構文ではありません。後者は次のようになります。

class Model(SomeBaseClass):
    pass

フォーマット (行は小見出しのように見えます) から判断すると、これは Django ドキュメントの誤りに違いありません。

ページのSphinx ソースを見ると、「クラス」が実際には Sphinx マークアップの一部であることがわかります。彼らが意味したのは

モデルの新しいインスタンスを作成するには、他の Python クラスと同じようにインスタンス化します。

Model(**kwargs)

キーワード引数は、モデルで定義したフィールドの名前です。

于 2013-02-25T20:08:20.377 に答える
0

最初の行はクラスを定義します。2 行目は、クラスのインスタンスを定義します。

于 2013-02-25T19:58:51.277 に答える