2012-07-03 12 views
8

私はこれをやろうとしている:輸入RelatedManager

from django.db.models.fields.related import RelatedManager 

私は、オブジェクトが、関連マネージャすなわちであるかどうかをテストできるようにしたいので:

isinstance(obj, RelatedManager) 

しかし、私はこのエラーを取得しておいてください。 エラー:名前をインポートすることはできませんRelatedManager

答えて

7

関連マネージャクラスがdjango.db.models.fieldsにジェネレータ関数の内部実行時に作成されます。直接インポートすることはできません。オブジェクトが特定の関係の関連マネージャであるかどうかを確認する場合は、isinstance(obj, MyModel.my_relation.__class__)を使用できます。 hasattrを使用して、オブジェクトに必要なプロパティ(ducktyping)があるかどうかを判断し、isinstanceの使用を避けることもできます。

+0

isinstance(obj、MyModel.reversename_set.related_manager_cls) – mrvol