0

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

以下是对它们的简要描述:

模型过程

  • 字段文件名
  • 字段路径
  • 其他领域
  • 字段栏

模型服务

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

我需要在文件名和路径列上加入这两个模型的所有实例。在此连接发生之前,我必须将现有过滤器应用于每个过滤器。

例子:

A = Process.objects.filter(somethingelse=231)

B = Service.objects.filter(foo='abc')

结果 = A.filter(filename=B.filename,path=B.path)

4

1 回答 1

1

这很糟糕,但最好的办法是迭代一种类型的所有模型,并发出查询以获取另一种类型的连接模型。

另一种替代方法是运行原始 SQL 查询来执行这些连接,并检索每个模型对象的 ID,然后基于此检索每个连接对。在运行时效率更高,但如果您的模式发展,则需要手动维护。

于 2012-03-07T19:30:11.220 回答