В моем проекте 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 для этих моделей несколькими способами, но также не добился там успеха.