在添加模型时,基于其他属性修改模型的属性:model.clean method?

时间:2014-11-12 14:47:51

标签: django django-models

我想在管理员或其他地方添加模型时,根据其他属性修改模型的属性。

例如:

Model A: 
has FK to Model B
has FK to Model C

Model B: 
has FK to Model C

当我创建模型A时,我选择模型B,因此我希望基于模型B上已存在的FK到模型C自动设置FK到模型C.

我找到了Model.clean方法(https://docs.djangoproject.com/en/dev/ref/models/instances/#django.db.models.Model.clean),但它说当你调用模型的save()方法时它没有被调用,所以什么时候调用它?我对这种方法的目的感到有点困惑。

我尝试了干净的方法,我能够在一些问题之后使其工作,但我想知道这是否是最好的方法呢?

由于 麦克

1 个答案:

答案 0 :(得分:0)

class A(models.Model):
    #your fields

    def __init__(self, *args, **kwargs):
        if not self.pk:
            # you can check for if C key is in arguments and
            # and set it if you need to.  This is for new
            # objects.