2016-05-17 8 views
0

)下記のSQLクエリをDjango ORMに変換しようとしています。私はそのタイプ(「A」、「B」、「C」)Django ORMがない場合(

の一つではない私は、多くの組み合わせを試してみましたが、私は可能性があるため、私は間違った結果を取得していますそれらの行をフィルタリングする必要が

select usp.user_id from Class_A as usp join Class_B as au 
     on au.id = usp.user_id join Class_C as up 
     on up.user_id = au.id where up.type not in ('A','B','C') 
     and up.end_time > now() and up.user_id = usp.user_id 
     and usp.data_enabled=1 and (usp.item_state=3 or usp.item_state=4) 
     and usp.user_id=au.id and au.is_active=1 

正しい方法でup.plan_type not in ('A','B','C')を実装しないでください。私はexclude()~Q()変数を使用してみましたが、すべての結合操作を実行した後に行を除外しているため正しい結果が得られていません。結合操作中に行を除外する必要があります。

私はclassA_plansは、関連する名前です。この

ClassA.objects.exclude(user__classA_plans__plan_type__in = ['I', 'C', 'D']).filter(user__classA_plans__end_time__gte = datetime.now(),**query) 

を試してみました。

私にこれを手伝ってください。

+1

あなたは正確に何をしようとしていますか? http://stackoverflow.com/help/how-to-ask – e4c5

+0

これまでに試したことを正確に表示してください。 – Sayse

+0

@コメント – Pramod

答えて

0

Django ORMでは条件付き結合は現在サポートされていません。クエリを再作成するか、raw sqlを使用するか、SQLAlchemyのような別のORMエンジンに切り替える必要があります。

関連する問題