如何在2个字段中加入Django 1.3中的非关系模型
-
09-12-2019 - |
题
我有2个现有模型,我需要加入非关系(没有外键)。这些是由其他开发人员编写的,不能被我修改。
这是它们的快速描述:
模型过程
- 字段文件名
- 场路径
- 字段某事物
- 字段栏
模型服务
- 字段文件名
- 场路径
- 现场服务
- 字段foo
我需要加入文件名和路径列上这两个模型的所有实例。我有现有的过滤器我必须在此加入之前应用于它们中的每一个。
示例:
a= process.Objects.filter(某事物= 231)
b= service.objects.filter(foo='abc')
结果= a.filter(filename= b.filename,path= b.path)
解决方案
这很糟糕,但您最好的选择是迭代所有类型的型号,并发出查询以获取其他类型的加入模型。
其他替代方法是运行原始的SQL查询以执行这些连接,并检索每个模型对象的ID,然后基于该模型检索每个加入的对。在运行时更有效,但如果您的架构演变,需要手动维护。
不隶属于 StackOverflow