Объект не имеет атрибута «подготовить» - PullRequest
1 голос
/ 20 апреля 2011

В моем проекте django у меня есть 4 модели, которые все связаны вместе в цепочку.

Model_D> Model_C> Model_B> Model_A

Таким образом, Model_C имеет поле внешнего ключа, которое указывает наModel_B, а Model_B имеет поле внешнего ключа, которое указывает на Model_A

Когда я выполняю поиск, как показано ниже, я получаю следующую ошибку

Model_D.objects.filter(model_c = object_of_type_c)

Я получаю ошибку "Model_C не имеет атрибута'prepare' '

Но, когда я выполняю такой поиск, я не получаю ошибку

Model_D.objects.filter(model_c__id = object_of_type_c.id)

или

Model_D.objects.filter(model_c = object_of_type_c.id)

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

РЕДАКТИРОВАТЬ: есть 5-я модель, Model_E, которая также связана с Model_C.У меня возникает та же проблема, когда я пытаюсь найти эту модель.Я не знаю, имеет ли это какое-то значение.

Самая странная часть в том, что кажется, что он хорошо работает для выполнения аналогичных поисков для Model_C или Model_B.

UPDATE:

http://code.djangoproject.com/ticket/13640

В Model_C есть метод с именем 'define', который является зарезервированным именем.Исправляет проблему, переименовывая метод.

Я пытался настроить значения related_name для этих моделей несколькими способами, но также не добился там успеха.

1 Ответ

2 голосов
/ 22 апреля 2011

http://code.djangoproject.com/ticket/13640

Эта ошибка возникает, когда вы определяете метод в модели с именем «оценивать».Переименование метода решает проблему.

...