Python 为什么选择instance.profile.save()
我理解这个代码有点困难Python 为什么选择instance.profile.save(),python,django,Python,Django,我理解这个代码有点困难 from django.db.models.signals import post_save from django.contrib.auth.models import User from django.dispatch import receiver from .models import Profile @receiver(post_save, sender=User) def create_profile(sender, instance, created,
from django.db.models.signals import post_save
from django.contrib.auth.models import User
from django.dispatch import receiver
from .models import Profile
@receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_profile(sender, instance, **kwargs):
instance.profile.save()
既然post_save信号证明用户已经保存,并且已经创建了与该用户相关联的配置文件,为什么我们需要在这里执行instance.profile.save
请帮我理解它!谢谢
编辑:
在instance.profile.save is profile中,内置关键字似乎是在创建用户时创建配置文件的第一个信号。第二个用于在一次调用中更新用户和配置文件,例如:
user.first_name = 'John'
user.last_name = 'Smith'
user.profile.age = 30
user.save() # user and profile are updated in one call
所以你不必做:
user.profile.save()
老实说,第二个信号是为了避免编写一行代码而造成的过度杀伤力。