因此,在任何Django项目中,通过重写save
方法来判断是否已创建对象非常简单:
def save(self, *args, **kwargs): created = False if not self.pk: created = True super(ModelName, self).save(*args,**kwargs) if created: #do what you want or call a signal
但是我需要User
在从django.contrib.auth.models.User创建一个函数之后调用一个函数.我宁愿不必实际编辑用户模型的save
方法.
我怎么能这样做?
注意:使用pre_save
将无法工作,因为模型中的所有信息都不可用,这是必要的.
您可以使用post_save信号.
from django.contrib.auth.models import User from django.db.models.signals import post_save from django.dispatch import receiver @receiver(post_save) def do_your_thing(sender, **kwargs): if sender is User: if kwargs["created"]: print kwargs["instance"].password # do your thing