27

プログラミングの質問でなくて申し訳ありませんが、クラス オブジェクトをイントロスペクトしようとしたときに、これが私の目に留まりました。

私はこれを見つけました

{'user_id': 1, '_state': <django.db.models.base.ModelState object at 0x10ac2a750>, 'id': 2, 'playlist_id': 8}

の役割とは_stateModelStateですか?

4

1 に答える 1

39

Django ソース コードから、_stateは各 Model インスタンスで定義されたインスタンス変数であり、次のようにModelState定義されているインスタンスです。

class ModelState(object):
    """
    A class for storing instance state
    """
    def __init__(self, db=None):
        self.db = db
        # If true, uniqueness validation checks will consider this a new, as-yet-unsaved object.
        # Necessary for correct validation of new instances of objects with explicit (non-auto) PKs.
        # This impacts validation only; it has no effect on the actual save.
        self.adding = True

したがって、基本的に、このインスタンス変数は、Modelインスタンスがすでに に書き込まれたかどうかdb(Django が複数の db バックエンドをサポートしていることを知っている) を知るために使用され、使用済みを保持するためにdb使用されます。このインスタンス変数属性は、モデル インスタンスを保存しaddingた後に false に設定され、ほとんど使用されます。 (上記のコードのコメントとして)主キーが一意であるかどうかを検証するため。

于 2012-07-19T13:33:41.277 に答える