使用post_save保存在两个模型中

时间:2013-04-01 13:40:42

标签: python django signals

我有一个问题:

我的应用中存在3个型号:

class Cliente(models.Model):
    #fields here ...

class Imovel(models.Model):
    #more fields and..
    dono = models.ForeignKey(Cliente)

class Captacao(models.Model):
    #here, have the fields of others models (Cliente and Imovel)

我希望通过模型“Captacao”填充模型“Cliente”和“Imovel”...我知道有post_save这个,但我不知道如何做到这一点,在每个相应的模型中保存这些字段。 / p>

谢谢,

1 个答案:

答案 0 :(得分:1)

如果您还没有Cliente,可以使用Imovel数据创建他:

def save_in_other_models(sender, instance, created, **kwargs):
    cliente = Cliente.objects.create(
        name=instance.name,
        ident=instance.ident,
    )
    Imovel.objects.create(
        dono=cliente
    )

models.signals.post_save.connect(save_in_other_models, sender=Captacao)

---------------- ** ---------------- ** ----------- ----- ** ---------------- ** ---------------- ** ------- --------- ** ---------

如果您已经拥有与您的Captacao关系的Cliente实例:

**这将使用与您的Cliente关系创建一个新的Imovel Imovel

def save_in_other_models(sender, instance, created, **kwargs):
    Imovel.objects.create(
        dono=instance.cliente
    )

models.signals.post_save.connect(save_in_other_models, sender=Captacao)