我有2个现有模型,我需要加入非关系(没有外键)。这些是由其他开发人员编写的,不能被我修改。

这是它们的快速描述:

模型过程

  • 字段文件名
  • 场路径
  • 字段某事物
  • 字段栏

    模型服务

    • 字段文件名
    • 场路径
    • 现场服务
    • 字段foo

      我需要加入文件名和路径列上这两个模型的所有实例。我有现有的过滤器我必须在此加入之前应用于它们中的每一个。

      示例:

      a= process.Objects.filter(某事物= 231)

      b= service.objects.filter(foo='abc')

      结果= a.filter(filename= b.filename,path= b.path)

有帮助吗?

解决方案

这很糟糕,但您最好的选择是迭代所有类型的型号,并发出查询以获取其他类型的加入模型。

其他替代方法是运行原始的SQL查询以执行这些连接,并检索每个模型对象的ID,然后基于该模型检索每个加入的对。在运行时更有效,但如果您的架构演变,需要手动维护。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top