Подтвердить что ты не робот

Django: Какова роль ModelState?

Извините за то, что это не вопрос программирования, но это привлекло мое внимание, когда я пытался исследовать объекты класса.

Я нашел это

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

Какова роль _state и что ModelState делает?

4b9b3361

Ответ 1

Из исходного кода Django _ state является переменной экземпляра, определенной в каждом экземпляре модели, который является экземпляром 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 после сохранения экземпляра модели, и в основном используется (как комментарий в коде выше) для проверки, если первичные ключи уникальны.