Какой атрибут экземпляра будет представлен в базе данных? для модели Django - PullRequest
1 голос
/ 15 марта 2019

Допустим, у меня есть модель с именем foo:

class Foo(models.Model):
    col_one = models.SomeFiled(...)
    col_two = models.SomeFiled(...)

Теперь я знаю, что col_one и col_two будут представлять столбцы в базе данных, но если я добавлю в модель метод init (), например:

class Foo(models.Model):
    col_one = models.SomeFiled(...)
    col_two = models.SomeFiled(...)
    def __init__(self):
        attr_one=value_one

Теперь каждый экземпляр Foo будет представлять запись в базе данных, но что attr_one будет представлять для этой конкретной записи, это как метаданные, связанные с этой записью? будет ли он храниться в базе данных при первом создании объекта?

Я новичок и в Python, и в Django, если мой вопрос тривиален.

1 Ответ

3 голосов
/ 15 марта 2019

В вашем конкретном случае attr_one - это локальная переменная, как и в любой функции python, которая исчезает после выполнения функции.

Если, с другой стороны, вы имели в виду self.attr_one=..., то это будет атрибут экземпляра класса, который будет потерян после уничтожения объекта. То есть он создается только тогда, когда вызывается эта функция, он доступен и определен до тех пор, пока используется тот же экземпляр объекта python, но при этом вы теряете тот же объект из базы данных с нуля.

Все это говорит о том, что я не отменял бы метод __init__ модели django. Особенно не без вызова супер (). Это будет препятствовать функциональности ядра django и, вероятно, приведет к ошибкам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...