如何实现 Django 的 pre_save 和 post_save?

0 投票
1 回答
601 浏览
提问于 2025-04-17 21:15

我尝试了很多方法来实现Django的pre_save和post_save信号,但还是无法生成信号。
我现在的代码是:

Class Client(models.Model):
    .
    .
    . # some fields

Class ClientView(models.Model):
    .
    .
    . # some fields
    class Meta:
        managed = False
        db_table = u'clients_view'
        verbose_name = 'Client'
        verbose_name_plural = 'Clients'

    def save(self):
        models.signals.pre_save.send(sender=obj, instance=self)
        obj = Client(**self.obj_to_dict())
        obj.save()
        models.signals.post_save.send(sender=obj, instance=self, created=True)

    def obj_to_dict(self):
        return {'pk': self.pk, 'name': self.name,
                'i_company': self.i_company, 'is_reseller': False}

请告诉我我哪里做错了??

1 个回答

2

类似这样的:

Class ClientView(models.Model):
#...your model definition...

def your_def(sender, instance, created, **kwargs):
        if created:
            client_view = instance
            #.....

post_save.connect(your_def, sender=ClientView)

撰写回答