Django错误:“ OneToOneField”的实例没有“用户名”成员pylint(无成员)

时间:2020-04-11 09:27:41

标签: django python-3.x

我是Django的新手,我正在学习它引发了youtube教程。我正在尝试建立一个简单的Blog,但是我认为有些问题可能与python或Django版本有关。 我正在使用python3.7.5和django2.1.5。 我创建了以下模型,该模型代表了用户的个人资料,该模型覆盖了save方法,从而可以调整上传的个人资料图片的大小。

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)

每次使用自我时,我都会收到类似的错误。 谁能帮我吗?

编辑: vscode可能有问题,因为如果我尝试打印:

   self.user.username

一切正常,以前有人遇到过同样的问题吗?

2 个答案:

答案 0 :(得分:0)

似乎您与用户模型有关。

让这种关系变成这样-

models.ForeignKey(用户,on_delete = models.CASCADE)

答案 1 :(得分:0)

多亏了k33da_lets_debug,我发现这是vscode设置存在的问题,我将linter从pylint更改为flake8,现在错误消失了。