1

私の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値をさまざまな方法で調整しようとしましたが、成功していません。

4

1 に答える 1

2

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

このエラーは、「evaluate」という名前のモデルでメソッドを定義するときに発生します。メソッドの名前を変更すると、問題が解決します。

于 2011-04-21T20:28:40.610 に答える