【问题标题】:Django: many to many relationship model definitionDjango:多对多关系模型定义
【发布时间】:2015-02-03 19:47:03
【问题描述】:

我在做一些模型,在设计它们时有一个想法,这里有一个例子:一家银行购买股票,因此一家银行可以拥有许多股票,并且可以从许多银行购买许多股票,它是多对多关系,但是当银行购买股票时,它必须记录价格和购买的日期/期间/轮次,出售的工作方式相同,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:英语不是我的第一语言,我在这里尽我所能

提前感谢您的回答!

【问题讨论】:

    标签: python django database models


    【解决方案1】:

    您正在寻找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()
    

    也许应该计算数量字段

    【讨论】:

      猜你喜欢
      • 2019-05-09
      • 1970-01-01
      • 2015-07-31
      • 2018-01-04
      • 2012-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-10
      相关资源
      最近更新 更多