django .contrib.auth.models.User.profile.RelatedObjectDoesNotExist: у пользователя нет профиля - PullRequest
0 голосов
/ 30 мая 2020

Мой файл models.py выглядит так:

from django.db import models
from django.contrib.auth.models import User

class Profile(models.Model):
    user = models.OneToOneField(User, related_name='profile', on_delete=models.CASCADE)
    image = models.ImageField(default='default.jpg', upload_to='profile_pics')

    def __str__(self):
        return f'{self.user.username} Profile'

Когда я пытаюсь заглянуть в оболочку:

>> from django.contrib.auth.models import User
>>> user = User.objects.filter(username='TestUser').first()
>>> user
<User: TestUser>
>>> user.profile
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "D:\Visual Studio Code Projects\cs50\Learning Django(other source)\Corey\djangoenv\lib\site-packages\django\db\models\fields\related_descriptors.py", line 423, in __get__
    self.related.get_accessor_name()
django.contrib.auth.models.User.profile.RelatedObjectDoesNotExist: User has no profile.

Я смотрел разные различные уроки и решения, он отлично подходит для всех. Пожалуйста, помогите мне с этим приветом, я действительно застрял на этом этапе.

1 Ответ

0 голосов
/ 30 мая 2020

Вы должны сначала создать профиль пользователя для пользователя:

profile = UserProfile.objects.create(user=request.user)

В вашем views.py вы можете использовать get_or_create, чтобы пользовательский профиль создавался для пользователя, если у пользователя его нет.

user, created = UserProfile.objects.get_or_create(user=request.user)
...