2017-01-04 9 views
1

データのフィルタリングに関する質問があります。例えば、私たちはモデル名(名前、アクティブ)をモデル化するためのFKである名前を持つモデルShopを持っています。アクティブで、1つのビューでアクティブではないショップ名をフィルタリングする必要がある場合はどうすればよいですか? 2つの2つのクエリを使用するのは唯一のオプションですか?そうでない場合、誰かがこれに効果的な方法を示してくださいできますか?質問は、2つの部分としてテーブルを取得し、2つのクエリを実行せずに単純な条件で分割できますか?テーブルをdjangoの2つの部分として取得

答えて

0

あなたの説明から判断すると、あなたはこのようなモデルアレンジメントを持っています、そうですか?

class Name(models.Model): 
    name = models.CharField() 
    active = models.CharField() 

class Shop(models.Model): 
    name = models.ForeignKey(Name) 

その後、あなたはこのような何か行うことができます。このループの最後で

active_list = [] 
inactive_list = [] 
shop_list = Shop.objects.all() 

for shop in shop_list : 
    if shop.name.active : 
     #Do something 
     active_list.append(shop) 

    else : 
     #Do something else 
     inactive_list.append(shop) 

print active_list 
print inactive_list 

を、あなたは、アクティブまたは非アクティブフィールドに基づいてすべてのお店を持つことになります。

EDIT:

コメントで述べたように、名前が非アクティブ、アクティブに基づいて選択する必要がオブジェクト場合は、この使用することができます:

active_list = [] 
inactive_list = [] 
name_list = Names.objects.all() 

for names in name_list : 
    if names.active == True : 
     #Do something 
     active_list.append(names) 
    else : 
     #Do something else 
     inactive_list.append(names) 
print active_list 
print inactive_list 
+0

をはい、あなたもそれをキャッチ。ありがとう、私は簡単なループでそれを作ることができることを知っています。しかし、私はどのようにdbフィルタテーブルを考えた。 dbが結果からrawを取り除くことを決定した場合、それがなぜ結果の追加として返されるのでしょうか? –

+0

@wowbrowsersearch他に何が必要ですか?名前モデルのアクティブフィールドの値は何ですか? –

+0

私はちょうどこれについて質問しています: 'アクティブ、no​​n_active = Names.objects.filter(店=店、アクティブ=真、bad_results =真)' –

関連する問題