Django多对多表的外键

我需要帮助才能正确设置模型.说我有三个型号:

>帐户
>所有者
>交易

帐户和所有者是多对多的,因此:

class Account(models.Model):
    number = models.CharField(max_length=10)

class Owner(models.Model):
    account = models.ManyToManyField(Account)
    fullName = models.TextField()

然后,“AccountOwner”可以进行许多交易.所以,如果我和我的妻子拥有相同的帐户,我可以为t进行多次交易,她可以.

我第一次尝试交易模型:

class Transaction(models.Model):
    #Does not work - Could pick account owner is not on
    account = models.ForeignKey(Account)
    owner = models.ForeignKey(Owner)
    title = models.CharField('title', max_length=50)

两个外键不起作用.我在account_owner表上需要一个外键.我可以在不创建实际的account_owner模型的情况下执行此操作吗?

感谢您的时间

实际上你已经创建了account_owner模型.它在代码中是不可见的,但它是存在的.您可以使其可见并在M2M字段中使用 through参数:

class Owner(models.Model):
    accounts = models.ManyToManyField(Account, through='OwnerAccount')
    fullName = models.TextField()

class OwnerAccount(models.Model):
    owner = models.ForeignKey(Owner)
    account = models.ForeignKey(Account)

class Transaction(models.Model):
    owner_account = models.ForeignKey(OwnerAccount)
    title = models.CharField('title', max_length=50)

您仍然可以像往常一样访问您的Owner.accounts many-2-many字段.那么您将调用owner.acounts.add(some_account)将自动创建相应的OwnerAccount实例.

相关文章
相关标签/搜索