私の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)
ここやグーグルで検索してもこのエラーを見つけることができないようです。関連するオブジェクトマネージャがどのように機能するかと関係があると思いますが、行き詰まっています。
編集:Model_Cにも関連付けられている5番目のモデルModel_Eがあります。このモデルを検索しようとすると、同じ問題が発生します。これが何か違いを生むかどうかはわかりません。
最も奇妙な部分は、Model_CまたはModel_Bに対して同様のルックアップを実行するために正常に機能するように見えることです。
アップデート:
http://code.djangoproject.com/ticket/13640
Model_Cには、予約名である「evaluate」という名前のメソッドがあります。メソッドの名前を変更して問題を修正します。
これらのモデルのrelated_name値をさまざまな方法で調整しようとしましたが、成功していません。