2016-07-14 5 views
0

私は、いくつかのモデルに適用したいジャンゴで(重複検出)、クエリがあります。ジャンゴ:ループ内のさまざまなオブジェクトを照会

Cooperation.objects.values('seo__slug').annotate(count=Count('id')).values('seo__slug).filter(count__gt=1) 
Article.objects.values('seo__slug').annotate(count=Count('id')).values('seo__slug).filter(count__gt=1) 
City.objects.values('seo__slug').annotate(count=Count('id')).values('seo__slug).filter(count__gt=1) 

私はこれを行うことができるようにコーディング概念がありますがループ。 例えば

information_objects = ['Cooperation', 'Article', 'City'] 
for obj in information_objects: 
    obj.objects.values('seo__slug').annotate(count=Count('id')).values('seo__slug).filter(count__gt=1) 

(擬似コード、下記これが動作していない)私は、私は全体の私の質問を得ることができると思います。 誰かがこの概念がDjangoでサポートされているかどうか教えていただけたら教えてください。

答えて

1

あなたは、実際のクラスが含まれ、その後、あなたのコードが動作するリストを作ることができます。

information_objects = [Cooperation, Article, City] 

あなたは絶対にそれが文字列に基づいて取得する必要がある場合は、あなたがglobals()からクラスを取得することができます。

information_objects = [globals()[name] for name in ('Cooperation', 'Article', 'City')] 

または使用GETATTR彼らは、特定のモジュールにある場合:

information_objects = [getattr(the_module, name) for name in ('Cooperation', 'Article', 'City')] 
+0

優れた答えは!ありがとうございました! – caliph

関連する問題