我正在学习 Django 中的教程,但在理解下面的代码时遇到了一些问题:
@receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
# why do we need to save instance? 'Profile.objects.create' already created and save that for us
@receiver(post_save, sender=User)
def save_profile(sender, instance, **kwargs):
instance.profile.save()
这意味着如果用户创建帐户或注册网站,使用信号将自动创建与该用户关联的配置文件。
问题是为什么我们需要保存配置文件的实例,因为Profile.objects.create(user=instance)已经同时创建并保存了该实例。
即使我省略了上面代码的第二块,它仍然可以正常工作:
@receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
我在这里遗漏了什么,或者我不明白,还是我们不需要第二个块?请帮助我理解这一点,并在此先感谢您。
明月笑刀无情
相关分类