【发布时间】:2015-08-14 20:40:22
【问题描述】:
我需要将 MySQL 表上的触发器转换为 Python/Django。
触发器将选择加载到游标中,循环并创建子记录。这里是:
DECLARE cur CURSOR FOR select id from eval_category;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
OPEN cur;
det_loop: LOOP
FETCH cur INTO ids;
IF done THEN
LEAVE det_loop;
END IF;
INSERT INTO eval_evaluationdetail
(evaluation_id, category_id) VALUES (NEW.id,ids);
END LOOP;
CLOSE cur;
为了将其转换为 Python,我修改了 models.py 如下:
def save(self):
super(Evaluation, self).save()
for cat in Category.objects.all():
self.EvaluationDetail.evaluation=self
self.EvaluationDetail.category=cat
self.EvaluationDetail.save()
这是最新的迭代,但它仍然不起作用:(任何帮助将不胜感激。
【问题讨论】:
-
但你为什么要这样做?
-
这是一个调度程序,所以在安排评估时,我想在详细文件(类别(1-100)中自动创建子记录(100条记录)。触发器工作正常在我的本地安装上,但托管站点不允许触发器(grrrr!)所以我需要复制触发器在 Django 中执行的过程。
-
啊,这让事情变得复杂了!但也许您可能需要考虑切换托管服务提供商而不是更改代码。他们可能会有更多像这样隐藏起来的惊喜。
-
谢谢,正是我的想法。
标签: python mysql django parent-child