Python自动创建子记录

2024-04-25 13:10:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要将MySQL表上的触发器转换为Python/Django。你知道吗

触发器将select加载到游标中,循环遍历并创建子记录。在这里:

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,我修改了型号.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()

这是最新的迭代,但仍然不起作用:(任何帮助将不胜感激。你知道吗


Tags: selfloopidforsaveevalselectdet
1条回答
网友
1楼 · 发布于 2024-04-25 13:10:40

首先,save_model代表ModelAdmin,而不是Model。它不会有什么特别的作用。你知道吗

您有两个选项:您可以覆盖模型上的save,或者使用post_save信号。以下是两种方法的其他答案的链接:

This answer有一个使用信号的好例子

This question有一个覆盖save的好例子,包括讨论如何在这两个选项之间进行选择。你知道吗

相关问题 更多 >