Django:ModelState的作用是什么?

day*_*mer 22 python django django-models

很抱歉这不是编程问题,但当我试图反省我的类对象时,这引起了我的注意.

我找到了这个

{'user_id': 1, '_state': <django.db.models.base.ModelState object at 0x10ac2a750>, 'id': 2, 'playlist_id': 8}
Run Code Online (Sandbox Code Playgroud)

角色是_state什么,有什么ModelState作用?

mou*_*uad 29

从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
Run Code Online (Sandbox Code Playgroud)

所以基本上这个实例变量用于知道Model实例是否已经写入db(知道Django支持多个db后端)并保存已db使用的,保存模型实例adding后该实例变量属性设置为false ,并且它主要用于(作为上面代码中的注释)用于验证主键是否唯一.

  • 如果代码保持在 79 列或更少,我就不必水平滚动的另一种情况。 (3认同)