用django orm查询

时间:2010-08-23 12:45:16

标签: django orm models

我需要用django orm选择行。我需要等同于这样的查询

select * from order where (user_from = u and f1 not is null) or (user_to = u and f2 not is null)

我尝试这样做:

Order.objects.filter(user_from = self).exclude(f1 = None)+Order.objects.filter(user_to = self).exclude(f2 = None)

但是在orm中没有联盟。怎么可能由orm完成这样的任务? (我看到一个解决方案,在我的模型中添加一些字段,但它无需添加字段即可解决它)

1 个答案:

答案 0 :(得分:1)

看看Q objects。您可以执行以下操作:

Order.objects.filter(
    Q(user_from = u, f1__isnull = False) | Q(user_to = u, f2__isnull = False)
)

警告:这是未经测试的代码。最好看到生成的实际SQL查询,并验证这确实是您所需要的。

相关问题