2014-03-07 38 views
0

我已經嘗試了很多來實現Django的pre_save和post_save,但仍然無法生成信號。
我擁有的是:如何實現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} 

請告訴我在哪裏,我做錯了?

+0

你在'save'方法(該變量在第二行初始化) – lanzz

+2

你不應該實施的第一行引用一個未初始化的變量'obj'任何代碼。基本模型類已經爲您完成信號的發送和對象的創建。 –

回答

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)