Django почему возникает ошибка 'RelatedManager' объект не имеет атрибута 'email_confirmed'?
При использовании user.email_confirmed
я не получаю никакой ошибки, но при использовании user.userprofile.email_confirmed
получаю ошибку RelatedManager. Почему я получаю эту ошибку, когда пытаюсь получить данные пользователя из модели userprofile?
вот мой код:
class UserManagement(AbstractUser):
is_blog_author = models.BooleanField(default=False)
is_editor = models.BooleanField(default=False)
is_subscriber = models.BooleanField(default=False)
is_customer = models.BooleanField(default=False)
email_confirmed = models.BooleanField(default=False) #there is no error when obtaining email_confirmed object from abstract user model.
class UserProfile(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE,related_name="userprofile")
email_confirmed = models.BooleanField(default=False)
#I am using this for email verification
class AccountActivationTokenGenerator(PasswordResetTokenGenerator):
def _make_hash_value(self, user, timestamp):
return (
six.text_type(user.pk) + six.text_type(timestamp) +
six.text_type(user.userprofile.email_confirmed) #error rising for this line
#six.text_type(user.email_confirmed) #I am not getting error if I use this line
)
account_activation_token = AccountActivationTokenGenerator()
views.py
....others code
if user is not None and account_activation_token.check_token(user, token):
user.userprofile.email_confirmed = True #why it's not working and rising error?
#user.email_confirmed = True #it's working
user.save()
.....others code
Как сказал мне @Nick ODell, мне нужно использовать filter.
Проблема возникла для этих двух наборов запросов:
user.userprofile.email_confirmed
и user.userprofile.email_confirmed = True
после того, как я изменил тему
user.userprofile.filter(email_confirmed=False)
и user.userprofile.filter(email_confirmed=False).update(email_confirmed=True)
моя проблема решена.