В django функция __init__ на модели вызывает ошибку атрибута, не может быть сохранена в базе данных - PullRequest
5 голосов
/ 06 июля 2010

Я использую django и определение модели, такое как

class Question(models.Model):
    title = models.CharField(max_length=100)
    description = models.TextField()
    order = models.IntegerField()

    def __init__(self, *args, **kwargs):
        self.title = kwargs.get('title','Default Title')
        self.description = kwargs.get('description', 'DefDescription')
        self.order = kwargs.get('order', 0)

Попытка вызова save () для объекта класса вопроса, заставляет оболочку ответить

/django/db/utils.py", line 133, in _route_db
    return hints['instance']._state.db or DEFAULT_DB_ALIAS
AttributeError: 'Question' object has no attribute '_state'

Однако, удалив функцию _____init_____, все снова будет в порядке.Любая идея о том, что вызывает это и как решить это?

большое спасибо

Ответы [ 2 ]

11 голосов
/ 06 июля 2010

Вам нужно вызвать метод суперкласса '__init__ в какой-то момент в методе вашего подкласса __init__:

def __init__(self, *args, **kwargs):
    super(Question, self).__init__(*args, **kwargs)
    # your code here
2 голосов
/ 27 февраля 2015

Согласно документации Django для моделей , не рекомендуется перезаписывать метод __init__ для моделей. Использование @classmethod или пользовательского менеджера предпочтительнее.

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