两个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

在Django中,是否可以通过两个模型之间的多个中间模型创建多对多关系

例如,我有一个对象用户和一个对象股票仓位,每次用户进行交易时,我都想创建一个中间模型(交易),该模型将用户和股票仓位作为外键。

你的意思是这样吗

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是的,应该可以<代码>外键仅在父表上是唯一的(在本例中,是
库存
表)。如果你打算走这条路线,我建议你建立某种独特的索引,以避免重复数据。我不确定你的用例,但我在回答中添加了一个例子。