如何为ManyToMany字段创建具有两个或多个Django模型的联合?

问题描述

我在3个不同的应用程序中拥有3个模型。

APP 1:
class ModelA(models.Model)
    title = models.CharField(max_length=200)
    organization = models.ForeignKey(Organization,on_delete=models.CASCADE)
    ...

APP 2:
class ModelB(models.Model)
    title = models.CharField(max_length=200)
    organization = models.ForeignKey(Organization,on_delete=models.CASCADE)
    ...

APP 3:
class ModelC(models.Model)
    name = models.CharField(max_length=200)
    organization = models.ForeignKey(Organization,on_delete=models.CASCADE)
    ...

然后我在自己的应用中拥有第4个模型。我想将前面的3个模型组合到一个字段中。

APP 4:
class ModelD(models.Model)
    title = models.CharField(max_length=200)
    organization = models.ForeignKey(Organization,on_delete=models.CASCADE)
    ...
    union = models.ManyToManyField(ModelA,blank=True)

就像在ModelD中一样,我可以使用一个模型(例如ModelA)建立ManyToMany关系(字段名称为“工会”)。

我正在寻找一种解决方案,可以将所有三个模型组合到一个ManyToMany字段中。就像在下一个执行我所需要的SQL查询中一样。

select id,"modelA" as "model" from app1.modelA
union
select id,"modelB" from app2.modelB
union
select id,"modelC" from app3.modelC

ManyToMany字段创建具有列ModelD_id和ModelA_id的交叉引用表。我假设我还需要一个交叉引用表,其中至少可以存储其他模型对象的modelD_id和id,并且我还需要来自模型的信息以拥有自己的列。就像SQL查询中的列名“模型”一样。

我正在建立复选框列表,以供用户选择正确的项目。

构建它的最佳方法是什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)