我正在使用 Django 查询从表中过滤掉一些事务,其中一个事务可能在表中有多个条目。
例如示例表
+---------------+---------+
| TransactionId | Status |
+---------------+---------+
| Txn0 | Pending |
| Txn0 | Success |
| Txn1 | Fail |
| Txn2 | Pending |
| Txn3 | Fail |
| Txn4 | Pending |
| Txn4 | Fail |
| Txn5 | Pending |
+---------------+---------+
当前查询:
SampleTable.objects.exclude(status='Fail').exclude(status='Success')
我当前的查询返回 Txn0、Txn2、Txn4、Txn5(因为这些被标记为待处理)。
我需要一个只返回行 Txn2, Txn5(因为所有其他事务至少有一个失败或成功事务)的查询集。
此外,尝试使用 .distinct() 但没有帮助。
请您参考如下方法:
嗯,不是直的。但是,首先过滤所有失败/成功状态的交易(行)。
success_fail_txns = SampleTable.objects.filter(status='Success')
| SampleTable.objects.filter(status='Fail')
pending_txns = SampleTable.objects.exclude(txnid__in=success_fail_txns)
