Django将用户映射到模型

时间:2018-05-12 16:52:44

标签: python django django-models

在Django 1.9上,我可以通过用户表单视图创建用户。当用户提交表单以创建个人资料时,可以在管理员的用户"并且记录正常。我希望用户只能查看他们上传的模型。因此我需要将它们映射到一起,但用户模型未在models.py中定义。

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

user = models.ForeignKey(User)

但是,抛出此错误:

NameError: name 'User' is not defined

这是因为没有将用户作为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()

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) ***

任何决议都将受到赞赏。 我使用的是python 3.6.4。

2 个答案:

答案 0 :(得分:5)

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

documentation说的一样,您应该使用AUTH_USER_MODEL设置:

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

class SomeModel(models.Model):

    user = models.ForeignKey(settings.AUTH_USER_MODEL)

答案 1 :(得分:2)

如果您想使用auth.User,则应从django

导入。{p>
from django.contrib.auth.models import User

class Clean(models.Model):
    user = models.ForeignKey(User)

或者,像Django应用string

中的auth一样使用它
user = models.ForeignKey('auth.User')