因此,在任何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
但是我需要在django.contrib.auth.models.User创建User
后调用函数。我不想实际编辑用户模型的save
方法。
我怎么能这样做?
使用pre_save
将无效,因为模型中的所有信息都不可用,这是必要的。
答案 0 :(得分:5)
您可以使用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