在这里有些挣扎。
因此,目前我有一个客户模型和一个银行模型。银行模型中的字段之一是金额。我的推理如下:一个客户可以在多个银行有一个帐户,而一个银行可以有多个客户。因此-> ManyToMany。现在的问题是,我只能为客户拥有的所有帐户指定1个金额...我该如何解决?创建另一个模型?一对一?非常感谢您的投入
最佳,
答案 0 :(得分:0)
您希望将关注点分离。因此,在模型方面,应该有Client
,Bank
和BankAccount
。不需要与客户建立多对多关系。
class Client(models.Model):
name = models.CharField()
class Bank(models.Model):
name = models.CharField()
class BankAccount(models.Model):
CHECKING = 'C'
SAVINGS = 'S'
TYPE = (
(CHECKING, 'Checking'),
(SAVINGS, 'Savings'),
)
client = models.ForeignKey(Client, related_name="bankAccountAsClient", on_delete=models.CASCADE)
bank = models.ForeignKey(Bank, related_name="bankAccountAsBank", on_delete=models.CASCADE)
amount = models.DecimalField(max_digits=8, decimal_places=2)
type = models.CharField(max_length=1, choices=TYPE)
通过这种方式,您可以使用BankAccount.objects.filter(client=client)
答案 1 :(得分:0)
有很多方法可以实现这一目标,但是最好在客户和银行之间建立模型。因此,将其命名为BankAccount,无论如何,它实际上就是您想要代表的,它看起来可能像这样:
class BankAccount(models.Model):
client = models.ForeignKey(Client, on_delete=models.CASCADE)
bank = models.ForeignKey(Bank, on_delete=models.CASCADE)
amount = models.PositiveIntegerField()
date_opened = models.DateField()
它的作用是现在可以正确地将银行和您的客户与相关信息连接起来,而不必重复其他数据以实现更好的“规范化”。