gpt4 book ai didi

多对多表的Django外键

转载 作者:行者123 更新时间:2023-12-04 13:59:47 26 4
gpt4 key购买 nike

我需要帮助正确设置我的模型。假设我有三个模型:

  • 帐号
  • 业主
  • 交易

  • 帐户和所有者是多对多的,所以:
    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模型。它在代码中是不可见的,但它是存在的。您可以使其可见并使用 through M2M领域的论点:

    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像往常一样多 2 多字段。那么你会调用 owner.acounts.add(some_account)对应的 OwnerAccount实例将自动创建。

    关于多对多表的Django外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28007412/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com