两个Django对象之间可以有多个中间模型吗?
在Django中,是否可以通过两个模型之间的多个中间模型创建多对多关系 例如,我有一个对象用户和一个对象股票仓位,每次用户进行交易时,我都想创建一个中间模型(交易),该模型将用户和股票仓位作为外键。你的意思是这样吗两个Django对象之间可以有多个中间模型吗?,django,django-models,Django,Django Models,在Django中,是否可以通过两个模型之间的多个中间模型创建多对多关系 例如,我有一个对象用户和一个对象股票仓位,每次用户进行交易时,我都想创建一个中间模型(交易),该模型将用户和股票仓位作为外键。你的意思是这样吗 class Transactions(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE) stock_position = models.ForeignKey(StockPos
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
(您通常应该/总是在代码中有一个例外)因此,是的,事务的模型看起来像您所描述的,但是您是否可以使用相同的外键创建多个事务?user=user()股票仓位=StockPosition()交易1=交易(user=user,position=stock\u position,share=5)交易2=交易(user=user,position=stock\u position,share=7)交易1.save()交易2.save()@JeffreyHe是的,应该可以<代码>外键仅在父表上是唯一的(在本例中,是库存
表)。如果你打算走这条路线,我建议你建立某种独特的索引,以避免重复数据。我不确定你的用例,但我在回答中添加了一个例子。