Ошибка Django: AttributeError: у объекта 'NoneType' нет атрибута 'db' - PullRequest
0 голосов
/ 22 августа 2011

Кто-нибудь видел эту ошибку раньше?Это происходит всякий раз, когда я пытаюсь выполнить запрос по моей конкретной модели.Запрос к БД напрямую работает нормально, а с другими моделями этого не происходит.

Например, это вызвано чем-то вроде:

MyModel.objects.get(name__iexact = 'an existent name')

Я полагаю, это началось сразу же после миграции базы данных с юга.Я мог бы откатить миграцию, но не хочу, чтобы все ухудшалось, поэтому я пришел сюда первым.

  • Django 1.3
  • PostgreSQL 8.4.8
  • Python 2.7.0
  • iPython 0.10.2
  • Ubuntu 10.10 64-bit

Есть идеи?

ERROR: An unexpected error occurred while tokenizing input
The following traceback may be corrupted or invalid
The error message is: ('EOF in multi-line statement', (173, 0))

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)

/home/<path to python>/<ipython console> in <module>()

/home/<path to python>/python2.7/site-packages/django/db/models/manager.pyc in get(self, *args, **kwargs)
    130 
    131     def get(self, *args, **kwargs):
--> 132         return self.get_query_set().get(*args, **kwargs)
    133 
    134     def get_or_create(self, **kwargs):

/home/<path to python>/python2.7/site-packages/django/db/models/query.pyc in get(self, *args, **kwargs)
    342         if self.query.can_filter():
    343             clone = clone.order_by()
--> 344         num = len(clone)
    345         if num == 1:
    346             return clone._result_cache[0]

/home/<path to python>/python2.7/site-packages/django/db/models/query.pyc in __len__(self)
     80                 self._result_cache = list(self._iter)
     81             else:
---> 82                 self._result_cache = list(self.iterator())
     83         elif self._iter:
     84             self._result_cache.extend(self._iter)

/home/<path to python>/python2.7/site-packages/django/db/models/query.pyc in iterator(self)
    287 
    288                 # Store the source database of the object

--> 289                 obj._state.db = db
    290                 # This object came from the database; it's not being added.

    291                 obj._state.adding = False

AttributeError: 'NoneType' object has no attribute 'db'

1 Ответ

0 голосов
/ 22 августа 2011

Пинаю себя за это, особенно учитывая, насколько очевидно, что сообщение об ошибке делает его ретроспективно.

Моя миграция добавила новое поле с именем "_state" в модель.Это поле вступило в противоречие с атрибутом _state объекта, на который есть ссылка в строке 289 query.pyc выше.

Итак, новый урок: никакое поле нельзя назвать «_state» в модели Django.

Следуетэто будет представлено как отчет об ошибке?

...