Django Query:如何使用sql"union"和"not in"函数

Sho*_*jaz 6 python django django-queryset

如何在django查询中使用union和"not in"函数.我搜索过它但找不到任何例子

SELECT id,address
    FROM tbl_nt
    WHERE st_id IN (1,2) AND name = 'foo'
    UNION (
        SELECT d.id,d.addrses
            FROM tbl_nt_123 d
            WHERE d.name='foo' AND condition_id NOT IN (
                SELECT condition_id 
                    FROM tbl_conditions
                    WHERE version_id = 5
            )
    )
Run Code Online (Sandbox Code Playgroud)

我已尝试此查询较低的部分,但没有工作

tbl_nt_123.objects.values_list('id', 'address').exclude(
    condition_id=tbl_conditions 
).objects.filter(version_id=5).values_list(
    'condition_id', flat=True)
)
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

请参考我一些好的链接或书籍,以了解提前django查询.

谢谢

Ger*_*ano 7

可能你应该只添加__inlookup修饰符:

tbl_nt_123.objects.values_list('id','address').exclude(
    condition_id__in=tbl_conditions.objects.filter(version_id=5).values_list('condition_id',flat=True))
Run Code Online (Sandbox Code Playgroud)

至于联盟,你可以使用|运算符伪造它.

union = queryset1 | queryset2
Run Code Online (Sandbox Code Playgroud)