Django query filter combining AND and OR with Q objects don't return the expected results

前端 未结 4 1860
心在旅途
心在旅途 2021-02-05 01:51

I try to combine AND and OR in a filter using Q objects. It looks like that the | behave like an AND. This is related to the previous annotate which is run in the same query and

4条回答
  •  庸人自扰
    2021-02-05 02:11

    OK, no success here or on #django. So I choose to use a raw SQL query to solve this problem...

    Here the working code:

    types_list = Type.objects.raw('SELECT * FROM equipment_type
        LEFT JOIN (                                            
            SELECT type_id, SUM(quantity) AS qty               
            FROM equipment_item                                
            GROUP BY type_id                                   
        ) T1                                                   
        ON id = T1.type_id                                     
        WHERE hide=0 AND deleted=0 AND (T1.qty > 0 OR stock=0) 
        ')
    

提交回复
热议问题