我是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
一切正常,以前有人遇到过同样的问题吗?
答案 0 :(得分:0)
似乎您与用户模型有关。
让这种关系变成这样-
models.ForeignKey(用户,on_delete = models.CASCADE)
答案 1 :(得分:0)
多亏了k33da_lets_debug,我发现这是vscode设置存在的问题,我将linter从pylint更改为flake8,现在错误消失了。