Django:多对多关系模型定义

2024-04-25 13:55:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我做了一些模型,在设计的时候有一个想法,这里有一个例子:一个银行买股票,一个银行可以有很多股票,很多股票可以从很多银行买,这是一种多对多的关系,但当银行购买股票时,它必须记录价格和购买的日期/期限/轮数,对出售也一样,o为了记录所有这些,我做了一个类似这样的分类:

class Bank(models.Model):
    name = models.Charfield()
    money = models.IntegerField()


class StockShares(models.Model):
    name = models.Charfield()
    price = models.Charfield()

现在要建立一段感情,我知道我必须补充一点

stock = models.ManyToManyField(StockShares)

但是,如何添加仅在发生购买或销售时才存在的关系属性呢?你知道吗

我在想也许我可以这样做:

class Bank(models.Model):
    name = models.Charfield()
    money = models.IntegerField()


class StockShares(models.Model):
    name = models.Charfield()
    price = models.Charfield()


class Sale(models.Model):
    bank = models.ForeignKey(Bank)
    stockshares = models.ForeignKey(StockShares)
    date = models.DateField()
    quantity = models.ForeignKey()##this should be the quantity of stockshares sold in $ im just lazy to write it down 

这就是我在不使用django的情况下在数据库管理器中正常使用的方法

在django有没有一种方法可以解决这个问题而不需要中间阶级来处理这种关系?或者我在做我想的好事,这就是在django必须做的事情

pd:英语不是我的第一语言,我在这里尽力了

提前感谢您的回答!你知道吗


Tags: djangonamemodel关系models记录银行class
1条回答
网友
1楼 · 发布于 2024-04-25 13:55:15

你在找一个Extra fields on many-to-many relationships
您的代码应该如下所示:

class Bank(models.Model):
    name = models.Charfield()
    money = models.IntegerField()
    members = models.ManyToManyField(StockShares, through='Sale')

class StockShares(models.Model):
    name = models.Charfield()
    price = models.Charfield()


class Sale(models.Model):
    bank = models.ForeignKey(Bank)
    stockshares = models.ForeignKey(StockShares)
    date = models.DateField()

也许数量应该计算出来

相关问题 更多 >