【发布时间】:2019-09-26 06:45:12
【问题描述】:
在 Django 中,是否可以通过两个模型之间的多个中间模型创建多个多对多关系?
例如,我有一个对象 user 和一个对象 stock_position,每次用户进行交易时,我都想做一个以 user 和 stock_position 作为外键的中间模型(交易)。
【问题讨论】:
标签: django django-models
在 Django 中,是否可以通过两个模型之间的多个中间模型创建多个多对多关系?
例如,我有一个对象 user 和一个对象 stock_position,每次用户进行交易时,我都想做一个以 user 和 stock_position 作为外键的中间模型(交易)。
【问题讨论】:
标签: django django-models
你的意思是这样的?
class Transactions(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
stock_position = models.ForeignKey(StockPosition,
on_delete=models.CASCADE)
share = models.IntegerField()
class Meta:
unique_together = (('user', 'stock_position', 'share'),)
如果您使用此唯一索引,您可以根据需要插入任意数量的用户/库存位置重复项,只要 share 列每次都不同。否则将引发IntegrityError(您通常/总是在您的代码中有例外)
【讨论】:
ForeignKeys 仅在父表(在本例中为 StockPosition 表)上是唯一的。如果您打算走这条路线,我建议您设置某种唯一索引,以避免重复数据。