我制作了一个自定义配置文件模型,如下所示:
from django.db import models
from django.contrib.auth.models import User
class UserProfile(models.Model):
user = models.ForeignKey('User', unique=True)
name = models.CharField(max_length=30)
occupation = models.CharField(max_length=50)
city = models.CharField(max_length=30)
province = models.CharField(max_length=50)
sex = models.CharField(max_length=1)
但是当我运行manage.py syncdb
时,我得到:
myapp.userprofile:'user'与模型User有关系,后者有 要么没有安装,要么是抽象的。
我也尝试过:
from django.contrib.auth.models import BaseUserManager, AbstractUser
但它给出了同样的错误。哪里我错了以及如何解决这个问题?
答案 0 :(得分:59)
正好在Django 1.5中AUTH_USER_MODEL
设置was introduced,允许使用带有auth系统的自定义用户模型。
如果您正在编写一个打算在Django 1.5到1.10及更高版本上使用项目的应用程序,这是引用用户模型的正确方法(现在可以与{{1}不同}):
django.contrib.auth.models.User
如果您正在编写支持Django 1.4的可重用应用程序,那么您应该通过检查Django版本来确定使用的引用,可能是这样的:
class UserProfile(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL)
答案 1 :(得分:52)
改变这个:
user = models.ForeignKey('User', unique=True)
到此:
user = models.ForeignKey(User, unique=True)