Я расширил пользовательские данные, используя другую модель (отношение OneToOne), и когда пользователь создается, его профиль также создается. Я хотел бы обновить поле mailing , когда пользователь создается без запроса.
models.py
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
mailing = models.BooleanField(default=False)
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
instance.profile.save()
views.py
def register(request):
...
if user_form.is_valid() and profile_form.is_valid():
user = user_form.save(commit=False)
user.mailing = profile_form.cleaned_data['mailing']
user.save() #The user is created but mailing is not set
return redirect('login')
profile_backend.py
class ProfileBackend(ModelBackend):
def get_user(self, user_id):
UserModel = get_user_model()
try:
return UserModel._default_manager.select_related('profile').get(pk=user_id)
except UserModel.DoesNotExist:
return None
Я могу установить переменную, принимая пользователя за объект, но это подразумевает использование дополнительного функция.