Впоследствии django создает экземпляр администратора, поскольку сохранение всегда состоит из чего-то вроде этого:
- Создать объект User
- Создать объект профиля (не может быть раньше, потому что он указывает на пользователя).
При сохранении объекта User ORM django не может знать, что объект создания профиля последует за ним, поэтому он не будет задерживать сигнал post_save никоим образом (даже не имеет смысла).
Лучший способ справиться с этим (imho), если вы хотите сохранить сигнал post_save, это переопределить метод сохранения UserExtension
примерно так:
def save(self, *args, **kwargs):
try:
existing = UserExtension.objects.get(user=self.user)
self.id = existing.id #force update instead of insert
except UserExtension.DoesNotExist:
pass
models.Model.save(self, *args, **kwargs)
Обратите внимание, что это заставляет каждую вставку, которая указывает на того же пользователя, что и существующий объект, становиться обновлением, это может быть неожиданным поведением для других частей кода.