使用两个外键连接两个表到第三个表
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)
我有三个表:
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)