Django ошибка: в экземпляре 'OneToOneField' отсутствует указатель члена 'username' (нет члена) - PullRequest
0 голосов
/ 11 апреля 2020

Я новичок в Django, и я учусь этому бросать учебник YouTube. Я пытаюсь создать простой блог, но у меня есть проблема, которая, я думаю, может быть связана с python или django версией. Я использую python3 .7.5 и django2.1.5. Я создал следующую модель, которая представляет профиль пользователя, который переопределяет метод сохранения, чтобы разрешить изменение размера загруженного изображения профиля.

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


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

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

     def save(self):
         super().save()

         img = Image.open(self.image.path)

         if img.height > 300 or img.width > 300:
              output_size = (300, 300)
              img.thumbnail(output_size)
              img.save(self.image.path)

Из этого я получаю несколько ошибок, например в str метод из этой строки:

return f'{self.user.username} Profile'

Я получаю эту ошибку:

Instance of 'OneToOneField' has no 'username' memberpylint(no-member)

И я получаю похожую ошибку каждый раз, когда использую self. Кто-нибудь может мне помочь?

РЕДАКТИРОВАТЬ: Вероятно, это проблема с vscode, потому что, если я пытаюсь напечатать:

   self.user.username

Это работает нормально, у кого-нибудь была такая же проблема раньше?

Ответы [ 2 ]

0 голосов
/ 11 апреля 2020

Благодаря k33da_lets_debug я обнаружил, что это проблема с настройкой vscode, я изменил свой линтер с pylint на flake8, и теперь ошибки исчезли.

0 голосов
/ 11 апреля 2020

Кажется, у вас есть проблема с отношением к пользовательской модели.

Позволяет сделать отношение примерно таким:

models.ForeignKey (user, on_delete = models.CASCADE)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...