在保存时更改django子对象的属性

时间:2012-10-22 15:20:24

标签: django foreign-key-relationship

我有两个模型,一个项目和一个动作:

class Project(models.Model):
    name = models.CharField("Project Name", max_length=200, unique = True)
    complete = models.BooleanField(default=False, verbose_name="Complete?")

class Action(models.Model):
    name = models.CharField("Action Name", max_length=200)
    project = models.ForeignKey(Project, blank=True, null=True, verbose_name="Project")
    notes = models.TextField("Notes", blank=True)
    complete = models.BooleanField(default=False, verbose_name="Complete?")
    status = models.IntegerField("Action Status", choices = STATUS, default=0)

当项目被标记为完成时,我希望所有的动作都被标记为完成。

我正在尝试在Project的保存方法中执行此操作:

    def save(self, **kw):
        self.last_modified = datetime.today()
        self.action.all().update(complete=True)

        super(Project, self).save(**kw)

我被困在上面的第三行。我不太确定如何设置与此项目相关的所有操作来完成。

2 个答案:

答案 0 :(得分:1)

您是否尝试过挂钩系统?

https://www.djangoproject.com/documentation/0_91/models/save_delete_hooks/

我认为这就是你要找的东西; - )

答案 1 :(得分:0)

在save方法中使用...

Action.objects.filter(project = self).update(complete=True)