如何将两个不同的django模型关联到另一个领域的多对多领域中?

时间:2019-05-13 13:22:57

标签: django

我正在尝试为Django模型的以下问题找到解决方案: 该应用程序会将产品添加到购物车。问题在于这些产品来自不同的型号,无论它们来自何处,我都想使用一个ManyToManyField来合并它们。

支持我有两种不同型号的两种产品:

Class ListOfProducts1(models.Model):
name= CharField()
price= IntegerField()

Class ListOfProducts2(models.Model):
name=CharField()
price=IntegerField()

以下模型将用于获取数量和添加的产品(然后与一个特定订单相关)。 这是问题所在。看一下添加的字段项目,我想将此字段与ListOfProducts 1和2关联起来。我将它们都放在了同一字段中,但是我已经知道这是不可能的。为了更好地理解这里的问题,您可以:


Class ProductsOrdered(models.Model):
itemsadded= OneToOneField(ListOfProducts1 and ListOfProducts2,on_delete=models.CASCADE)
Quantity = IntegerField()

然后订购的模型:


Class Orders(models.Model):
cart= ManyToManyField(ProductsOrdered)

1 个答案:

答案 0 :(得分:0)

OneToOne字段只能引用一个表。

但是您可以使用GenericForeignKey或其他替代方法(更好)。

查看这篇文章:Avoid Django’s GenericForeignKey。它描述了替代方法,例如:

  • 源表上的空字段
  • 具有可空字段的中间表
  • 目标模型上具有OneToOneFields的中间表
  • 多表继承
  • 多个链接模型