【发布时间】:2021-01-05 02:03:58
【问题描述】:
假设我有一个看起来像这样的表
col1 col2
1 completed
2 error
3 inititated
4 error
5 completed
6 error
7 completed
现在我在 django 中有这样的查询:
Model.objects.filter(col1__in=[1,2,8]).values('col2')
这个查询运行良好,但我想要做这样的事情: 返回 col2 的“待处理”,其中 col1 不在上述列表中 即为 8 返回“待处理”,因为它不在表中,而为 1 和 2 返回“已完成”和“错误”
【问题讨论】:
-
我认为这不可能通过单个查询来实现。可能的方法是编写自己的models.Manager。也许你可以看看这里得到一些想法:stackoverflow.com/a/20674112/6705092
-
Thanx,但我仍然怀疑在不存在的 postgresql 中是否有可能
-
我会亲自在表 tbh 中添加待处理状态,这是我通常做这类事情的方式。
-
嗨@BrankoRadojevic 我很欣赏你的个人意见,但想想一个情况,当挂起状态比其他状态更常见时,那么我们只是无缘无故地增加数据库大小?
-
好吧,如果挂起状态总是最后一个,那毕竟不是很常见,不是吗?有了它,您可以获得非常干净的数据库查询。当然,您可以随意尝试其他方法,但这种方法可能是最简单的。
标签: python django postgresql