@IoannKh

Почему не получается отправить изображение на профиль пользователя?

При попытке выгрузить изображение в профиль юзера появляются ошибки. Код и ошибки прилагаю ниже.
class Profile(models.Model):
    # user = models.OneToOneField(User, on_delete=models.CASCADE)
    # user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, verbose_name='User')

     user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='profile_user', verbose_name='User')

     avatar = models.ImageField(settings.AUTH_USER_MODEL, default='media/no_image.jpg', blank=True)


     class Meta:
         verbose_name = _('Profile')



     @receiver(post_save, sender=User)
     def create_profile(sender, instance, created, **kwargs):
          if created:
             Profile.objects.create(user=instance)

views.py
def avatar_img(request):
    # profile = request.user.profile_user
    # profile = request.user.profile
    profile = request.user
    form = ProfileForm(instance=profile)
    if request.method == 'POST':
        form = ProfileForm(request.POST, request.FILES, instance=profile)
        if form.is_valid():
            form.save()
    context = {'form': form}
    return render(request, 'user.html', context)

User был взят из модели другого приложения forum.models
class User(AbstractBaseUser, PermissionsMixin):
    # identifier = models.CharField(max_length=40, unique=True)
    # date_of_birth = models.DateField()
    # height = models.FloatField()

    username = models.CharField(max_length=255, unique=True)
    email = models.EmailField(max_length=255, unique=True)
    password1 = models.CharField(max_length=255)
    password2 = models.CharField(max_length=255)
    is_staff = models.BooleanField(default=False)
    is_active = models.BooleanField(default=True)
    objects = UserManager()

    USERNAME_FIELD = 'username'

    REQUIRED_FIELDS = ['email', 'password']

Когда в модели views использую код " profile = request.user.profile_user"
Появляется ошибка "RelatedManager не имеет атрибут мета".
Когда " profile = request.user.profile", то жалуется на юзера, который не имеет атрибут профиль.
Когда использую " profile = request.user", то при попытке загрузить изображение в профиль оно не грузится.
  • Вопрос задан
  • 23 просмотра
Пригласить эксперта
Ответы на вопрос 1
@bacon
Потому что ты программируешь методом тыка, надо перестать так делать и начать понимать смысл каждого действия.

Когда в модели views использую код " profile = request.user.profile_user"
потом что ты сделал ForeignKey, а у него может быть больше одной записи

Когда " profile = request.user.profile", то жалуется на юзера, который не имеет атрибут профиль.
при связи OneToOneField ее может и не быть, поэтому надо делать проверку на нее наличие, всё описано в доках

Когда использую " profile = request.user", то при попытке загрузить изображение в профиль оно не грузится.
потому что user тут не Profile, а User, у тебя же там нет никакого изображения. Кстати, зачем тебе в базе хранить пароль два раза? Кроме этого он вообще не так храниться

Почему бы тебе просто не добавить поле изображения в модель User?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы