2011-01-31 6 views
0

モデルに対してフィルタを実行し、特定の属性を持つすべてのオブジェクトを返したいとします。hasattr(またはそのようなもの)を使ったDjangoフィルタクエリ

model.objects.filter(hasattr(model, 'attrname')) 

これは明らかに機能しませんが、効率的に何かを実装する方法がわかりません。

おかげ

EDIT

私はmodel1.objects.all()である返されたオブジェクトの各操作を行う場合は、モデルが別の

class model1(models.Model): 
    ... 

class model2(model1): 
    ... 

から継承されたときに、これは使用する場所の例model2には特別な属性があります

答えて

0

私はちょうどそれを置く:

try: 
    .... 
except AttributeError: 
    .... 
2

これは実際には意味がありません。すべてのモデルインスタンスは、モデルクラスで定義されているのと同じ属性を持ちます。あなたの実際の目標は何ですか?

いいえ、それはありません。 Model1.objects.all()を実行すると、すべての結果がModel1のインスタンスになり、Model1の属性のみが保持されます。

+0

を助け

from django.core.exceptions import FieldError from contextlib import suppress with suppress(FieldError): model.objects.filter(field_in_other_class=value) 

希望モデルには、親に属性を追加し、質問をより明確に編集します。ありがとう – neolaser

+0

彼らはModel1のインスタンスを返しますが、それらがModel2に関連している場合、Model2インスタンスを返すための追加のmodel2属性があります。 – neolaser

+0

いいえそうではありません。彼らは本当にしません。それを試してみてください。 –

0

それはFieldError例外を抑制することだった私が行った方法を:モデルは他から継承されている場合

関連する問題