在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。
答案 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
from django.contrib.auth.models import User
class Clean(models.Model):
user = models.ForeignKey(User)
或者,像Django应用string
auth
一样使用它
user = models.ForeignKey('auth.User')