我正在尝试使用Django进行数据迁移,但无法将我的SQL转换为有效的Django ORM代码。我的db表如下所示:
finacial_quarter (id, start_date, end_date)
report (id, add_date, financial_quarter_id)
对于报告中的每条记录,我想将report.financial_quarter_id设置为finacial_quarter中相应记录的id,即report.add_date介于financial_quarter.start_date和financial_quarter.end_date之间的记录。
这方面的SQL是微不足道的:
UPDATE report as r SET r.financial_quarter_id =
(SELECT id
FROM financial_quarter as f
WHERE r.add_date >= f.start_date AND r.add_date <= f.end_date)
但是将它映射到Django的ORM以使其高效运行似乎不可能,因为它似乎不是一种在内部查询中引用查询字段的方法。
我可以通过循环遍历报表中的所有记录然后运行另一个查询来获取财务季度ID来轻松完成此操作,但运行迁移需要大约30秒(我将在最坏的情况下使用)。有没有办法编写Django代码来生成提供的SQL?