Skip to main content
 首页 » 编程设计

python之Django 将用户映射到模型

2025年05月04日12lonelyxmas

在 Django 1.9 上,我可以通过用户表单 View 创建用户。当用户提交表单以创建个人资料时,可以在 Users 下的管理员中看到提交并正常登录。我希望用户只能查看他们上传的模型。因此,我需要将它们映射在一起。但是,用户模型未在 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。

请您参考如下方法:

您可能缺少 import 语句,但是尽管如此,直接引用 User 通常不是一个好主意,因为稍后,您可能会改变您为用户使用的模型。

喜欢documentation说,你应该使用 AUTH_USER_MODEL 设置:

<b>from django.conf import settings</b> 
from django.db import models 
 
class SomeModel(models.Model): 
 
    user = models.ForeignKey(<b>settings.AUTH_USER_MODEL</b>)