Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
@receiver(post_save, sender=User)
def create_or_update_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
instance.profile.save()
you should reference the User model with the AUTH_USER_MODEL setting in code that is executed at import time. get_user_model() only works once Django has imported all models.пишет, что «Это означает, что для определения моделей, регистрации сигналов, создания миграций и т.д., get_user_model () не работает.»
save(), Вы будете править исходники Django, а при использовании сигналов — нет.they do not get auto created when a user is created, but a django.db.models.signals.post_save could be used to create or update related models as appropriatedef save(self, *args, **kwargs):
is_created = self.pk is None
super(BaseModel, self).save(*args, **kwargs)
if is_created:
one_to_one_model.objects.create(<some params>)
Profile, но по каким-то причинам иногда создает/изменяет/удаляет User. Более того, у Вас может быть несколько Profile (например от разных приложений) — в каком из них Вы будете размещать Ваш метод?User, а (все) Profile – зависимые. Потому что User может существовать без Profile, но не наоборот.
Стратегии расширения Django User Model