“ OneToOneField”的实例没有“用户名”成员

时间:2019-03-17 07:46:20

标签: python django

创建个人档案模型时出现以下错误

  

“ OneToOneField”的实例没有“用户名”成员

这是我创建的代码的片段

from django.db import models
from django.contrib.auth.models import User
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"

以前运行正常。现在,突然我收到了这个错误,我不明白这个错误的含义。我该如何解决? 谢谢

2 个答案:

答案 0 :(得分:1)

为了使pylint与Django一起正常工作,您应该安装pylint-django软件包:

pip install pylint-django

然后您可以将pylint作为插件运行pylint_django

pylint --load-plugins pylint_django <path_to_django_file>

如果您将VSCode用作IDE,则可以将此代码段添加到.vscode/settings.json文件中,以为您的项目加载插件:

{
    "python.linting.pylintArgs": [
        "--load-plugins",
        "pylint_django"
    ]
}

或者,如果您有.pylintrc文件,则可以添加以下行以加载插件:

[MASTER]
load-plugins=pylint_django

You can find out more on about pylint-django here.

答案 1 :(得分:0)

除了Pumi的答案,当您通过pip安装pylint-django时,您可能还会出现另一个错误: “错误:无法卸载'wrapt'。这是一个distutils安装的项目,因此我们无法准确确定属于该文件的文件,这只会导致部分卸载。”

然后您必须输入以下内容:

pip install wrapt --upgrade --ignore-installed

然后重试pip install pylint-django

如果您使用的是conda解释器,则.vscode/settings.json内还有一个现有的{"python.pythonPath": "./anaconda3/bin/python"}。因此,您只需要添加列表,而无需使用@Pumi指定的其他花括号。因此,您将得到以下内容:

{
"python.pythonPath": "./anaconda3/bin/python",

"python.linting.pylintArgs": [
        "--load-plugins",
        "pylint_django"
    ]
}

那你很好。