2010-12-04 12 views
1

2つのクエリセットには両方とも同じモデルクラスのインスタンスが含まれています。Django:2つのクエリセットと重複

class DBV: 
    name = CharField 
    description = TextField 
    review_state = CharField(choices=[u"Draft",u"Published",u"Archived"]) 
    team_members = FK(User) 
    deleted = Boolean 

これは、私は2つのクエリセットを取得するためにフィルタリングしています方法です:

res = DBV.objects.filter(deleted=False).filter(team_members=user) 
if user.has_perm('dbv.can_view_dbv'): 
    r = DBV.objects.filter(deleted=False).filter(review_state__in=[u'Published',u'Archived',]) 
    res = res + r 

最初の問題は、もちろん、あなたがクエリセットを追加しようとしたとき、あなたが得ることです:

unsupported operand type(s) for +: 'QuerySet' and 'QuerySet' 

これらのクエリセットをマージして重複を削除する最も良い方法は何ですか?私は実際にSQLを書く以外にDjangoでそれを行う方法ではないことを理解しています。または?

ありがとうございました! :) エリック

答えて

2

あなたがリストにクエリを変換し、結果の両方のセットが必要な場合は、リストを追加、またはクエリのロジックを組み合わせるために一緒に「Q」オブジェクトを使用し、またはそれらことができ:http://docs.djangoproject.com/en/1.2/topics/db/queries/#complex-lookups-with-q-objects

+0

ハ!それだ。 Qオブジェクトをありがとう。それは私の問題を解決するように見えます。 :) ありがとうございました。 –

0

|演算子を使用できます。すなわち

Queryset1 | Queryset2これは、集合の和集合に相当します。 Queryset1 & Queryset2あなたのセットの交差点を与える

関連する問題