Установка значения определенного атрибута модели, связанной с пользователем - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть модель, связанная с пользователем (отношение: OneToOne), в этой модели у меня есть поле с именем email_confirmation. Я могу получить доступ к этому полю, но не могу его обновить.

models.py

class Profile(models.Model):
    profile_user               =   models.OneToOneField(User, ...) 
    profile_email_confirmation =   models.BooleanField(default=False)

views.py

def mail_confirmation(request, uidb64, token):
    uid = force_text(urlsafe_base64_decode(uidb64))
    user = User.objects.get(pk=uid)
     ...
    if user is not None and account_activation_token.check_token(user, token):
        user.profile.profile_email_confirmation = True
        user.save() #This isn't working and doesn't cause any error
        login(request, user) #This is working  
        return redirect('/home') #This is working

Эта функция не вызывает никаких ошибок, поэтому я не знаю, что не так. Я на самом деле получаю перенаправление в / home (зарегистрировано). Я также могу получить доступ к полю profile_email_confirmation

Когда я проверяю модель на странице администратора, поле profile_email_confirmation не изменяется.

1 Ответ

2 голосов
/ 03 апреля 2020

Вам необходимо также сохранить экземпляр профиля

if user is not None and account_activation_token.check_token(user, token):
    user.profile.profile_email_confirmation = True
    <b>user.profile.save() # add this extra line</b>
    user.save()
    login(request, user)
    return redirect('/home')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...