Django将用户映射到模型

Yun*_*ter 1 python django django-models

在Django 1.9上,我可以通过用户表单视图创建用户。当用户提交表单以创建配置文件时,可以在管理员的“用户”下看到该提交,并且可以很好地登录。我希望用户只能查看他们已上传的模型。因此,我需要将它们映射在一起,但是在models.py中未定义用户模型。

我试图将它们与我模型中的models.py链接在一起:

user = models.ForeignKey(User)
Run Code Online (Sandbox Code Playgroud)

但是,抛出此错误:

NameError: name 'User' is not defined
Run Code Online (Sandbox Code Playgroud)

这是由于在我的models.py中没有用户作为模型吗?

创建用户的请求:

def post (self, request):
    form = self.form_class(request.POST)

    if form.is_valid():
        #creates an object from the form
        #being stored locally as of now
        user = form.save(commit=False)

        #cleaned data
        username = form.cleaned_data['username']
        password = form.cleaned_data['password']
        user.set_password(password)
        #Saved to the DB after it's shown in the correct format
        user.save()
Run Code Online (Sandbox Code Playgroud)

models.py:

class Clean(models.Model):
    name = models.CharField(max_length=100, blank = False)
    #User doesn't see when creating model
    cv = models.TextField(max_length=10000, blank = True, null = True)
    cvfile = models.FileField(validators=[validate_file_extension])
    #User doesn't se when creating model
    cvscore = models.IntegerField()
    spellerrors = models.CharField(max_length=100, blank = False)

    *** user = models.ForeignKey(User) ***
Run Code Online (Sandbox Code Playgroud)

任何解决方案将不胜感激。我正在使用python 3.6.4。

Wil*_*sem 5

您可能缺少import声明,但是User直接引用通常不是一个好主意,因为稍后您可能会更改用于用户的模型。

文档所述,您应使用以下AUTH_USER_MODEL设置:

from django.conf import settings
from django.db import models

class SomeModel(models.Model):

    user = models.ForeignKey(settings.AUTH_USER_MODEL)
Run Code Online (Sandbox Code Playgroud)