Django 无法解析关键字';用户';到田野里去。选项包括:文档、id、密码、用户名、用户名\u id

Django 无法解析关键字';用户';到田野里去。选项包括:文档、id、密码、用户名、用户名\u id,django,Django,我的模型有问题,或者我试图实现算法的方式有问题。 models.py class Profile(models.Model): username = models.OneToOneField(User, on_delete=models.CASCADE) password = models.TextField(max_length=80,blank=True) class Document(models.Model): docfile = models.FileFie

我的模型有问题,或者我试图实现算法的方式有问题。 models.py

class Profile(models.Model):
    username = models.OneToOneField(User, on_delete=models.CASCADE)
    password = models.TextField(max_length=80,blank=True)


class Document(models.Model):
    docfile = models.FileField(upload_to='documents/%Y/%m/%d')
    uploaded_by = models.ForeignKey(Profile,on_delete=models.CASCADE)
    date_uploaded = models.DateTimeField(auto_now_add=True)
上传功能(views.py)

我上传时出错了

Cannot resolve keyword 'user' into field. Choices are: document, id, password, username, username_id
它指向第57行

profile=profile.objects.get(用户=request.user)

如果我换这条线

profile = Profile.objects.get(username = request.user)
我有这个错误

Exception Value:    
Profile matching query does not exist.
是否可以从shell获取更多信息? 到目前为止,这是有效的

In [3]: user = User.objects.get(username='drazen75')
In [6]: user.last_login
Out[6]: datetime.datetime(2018, 6, 24, 7, 1, 2, 196411, tzinfo=<UTC>)
编辑 Daniel建议我更改profile字段

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    password = models.TextField(max_length=80,blank=True)
完成了,也完成了迁移。 同样的问题

File "/home/milenko/nup/malex/views.py" in upload
  57.             profile = Profile.objects.get(user = request.user)

File "/home/milenko/miniconda3/lib/python3.6/site-packages/django/db/models/manager.py" in manager_method
  82.                 return getattr(self.get_queryset(), name)(*args, **kwargs)

File "/home/milenko/miniconda3/lib/python3.6/site-packages/django/db/models/query.py" in get
  403.                 self.model._meta.object_name

Exception Type: DoesNotExist at /upload/
Exception Value: Profile matching query does not exist.
sqlite模式输出 .schema malex_配置文件

CREATE TABLE IF NOT EXISTS "malex_profile" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "password" text NOT NULL, "user_id" integer NOT NULL UNIQUE REFERENCES "auth_user" ("id") DEFERRABLE INITIALLY DEFERRED);

如何解决此问题?

出于某种原因,您调用了将配置文件链接到用户
用户名的字段。您可以将查询改为使用
username
,但实际上您应该修复该字段;它指的是用户,因此它应该被称为
User

您在shell中使用的
User.objects
,但在您的代码中有
配置文件。objects
-
配置文件
没有
User
属性,它确实有
username
属性。也许这只是你认为的一个输入错误?我已经编辑了我的文章。丹尼尔,我已经授权了用户。请看我的编辑!你有那个用户的个人资料吗?你创造了一个吗?
File "/home/milenko/nup/malex/views.py" in upload
  57.             profile = Profile.objects.get(user = request.user)

File "/home/milenko/miniconda3/lib/python3.6/site-packages/django/db/models/manager.py" in manager_method
  82.                 return getattr(self.get_queryset(), name)(*args, **kwargs)

File "/home/milenko/miniconda3/lib/python3.6/site-packages/django/db/models/query.py" in get
  403.                 self.model._meta.object_name

Exception Type: DoesNotExist at /upload/
Exception Value: Profile matching query does not exist.
CREATE TABLE IF NOT EXISTS "malex_profile" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "password" text NOT NULL, "user_id" integer NOT NULL UNIQUE REFERENCES "auth_user" ("id") DEFERRABLE INITIALLY DEFERRED);