почему instance.profile.save () - PullRequest
       0

почему instance.profile.save ()

2 голосов
/ 16 марта 2019

У меня возникли проблемы с пониманием этого кода.

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()

Почему нам нужно выполнить instance.profile.save() здесь, учитывая, что сигнал post_save является доказательством того, что пользователь уже сохранен, и профиль, связанный с этим пользователем, уже создан?

Пожалуйста, помогите мне понять это! Спасибо

редактирование: в instance.profile.save() есть profile встроенное ключевое слово

1 Ответ

2 голосов
/ 16 марта 2019

Похоже, первым сигналом является создание профиля при создании пользователя. Второй - обновить пользователя и профиль за один звонок, например:

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...