Django 添加时基于其他属性修改模型上的属性:model.clean方法?
我想在从管理员或其他位置添加属性时,基于其他属性修改模型上的属性 例如:Django 添加时基于其他属性修改模型上的属性:model.clean方法?,django,django-models,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方法,但它说在调用模型的save方法时不会调用它,那么什么时候调用它呢?我当时对这种方法的目的有点困惑 我尝试了干净的方法,在一些问题之后我能够使它工作
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方法,但它说在调用模型的save方法时不会调用它,那么什么时候调用它呢?我当时对这种方法的目的有点困惑
我尝试了干净的方法,在一些问题之后我能够使它工作,但我想知道这是否是最好的方法
谢谢
Mike为什么不能使用查找?@Beltiras你什么意思?外键用于跟踪关系。你的用例是什么?是的。问题不在于如何获得modelC。我知道如何让它在modelA modelA.modelC=modelA.modelB.modelC上设置,但问题是我应该在何时/何地这样做,这样,如果我在管理员中添加modelA而只设置modelB,modelA上的modelC将自动设置为modelB具有的相同值。听起来我的问题不是很清楚。对此很抱歉。经过您的澄清,在A中使用C的外键听起来更加多余。
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.