使用两个外键连接两个表到第三个表

Join two tables through third one with two foreign keys

我有三个表:

class Bank(models.Model):
    ...

class Deposit(models.Model):
    ...

class DepositProposal(models.Model):
    percent = models.FloatField()
    deposit = models.ForeignKey(Deposit)
    bank = models.ForeignKey(Bank)

银行可以通过应用 DepositProposal 实例参与存款拍卖。如何筛选不参与存款的银行? 发现我应该使用两个左连接,但我没有使用 PosgtreSQL 遇到它。

如果您想了解银行不参与的存款:

1- 添加一个 related_name 到存款和银行:

class DepositProposal(models.Model):
    percent = models.FloatField()
    deposit = models.ForeignKey(Deposit, related_name = "proposals")
    bank = models.ForeignKey(Bank, related_name = "proposals")

2- 获取您要查询的银行:

bank = Bank.objects.first() #For example, the first bank

3- 获取查询集:

deposits = Deposit.objects.exclude(proposals__bank = bank)

编辑:

如果您想了解不参与特定存款的银行:

deposit = Deposit.objects.first() #For example, the first deposit
banks = Bank.objects.exclude(proposals__deposit = deposit)