Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用';用户';作为Django 1.5中的外键_Python_Django_Django Users - Fatal编程技术网

Python 如何使用';用户';作为Django 1.5中的外键

Python 如何使用';用户';作为Django 1.5中的外键,python,django,django-users,Python,Django,Django Users,我制作了一个自定义轮廓模型,如下所示: 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.CharFi

我制作了一个自定义轮廓模型,如下所示:

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)
import django
from django.conf import settings
from django.db import models


def get_user_model_fk_ref():
    if django.VERSION[:2] >= (1, 5):
        return settings.AUTH_USER_MODEL
    else:
        return 'auth.User'


class UserProfile(models.Model):
    user = models.ForeignKey(get_user_model_fk_ref())
但当我运行
manage.py syncdb
时,我得到:

myapp.userprofile:“用户”与模型用户有关系,模型用户具有 未安装或是抽象的

我还尝试:

from django.contrib.auth.models import BaseUserManager, AbstractUser
但它给出了同样的错误。我错在哪里以及如何解决此问题?

更改此项:

user = models.ForeignKey('User', unique=True)
为此:

user = models.ForeignKey(User, unique=True)

Django 1.5中的
AUTH_USER_MODEL
设置,允许在AUTH系统中使用自定义用户模型

如果您正在编写一个应用程序,打算在Django 1.5到1.10及更高版本上使用项目,这是引用用户模型的正确方法(现在可以不同于
Django.contrib.auth.models.user
):

  • 有关更多详细信息,请参阅
如果您正在编写一个支持Django 1.4的可重用应用程序,那么您可能应该通过检查Django版本来确定要使用的引用,可能如下所示:

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)
import django
from django.conf import settings
from django.db import models


def get_user_model_fk_ref():
    if django.VERSION[:2] >= (1, 5):
        return settings.AUTH_USER_MODEL
    else:
        return 'auth.User'


class UserProfile(models.Model):
    user = models.ForeignKey(get_user_model_fk_ref())

您的settings.py中安装的应用程序中是否有“django.contrib.auth”?这一项似乎有效:“user=models.OneToOneField(user,primary\u key=True)”。但是不确定有什么区别。区别在于对于OneToOneField,用户只能有一个配置文件(这可能是您想要的)。如果我们使用
OneToOneField
而不是带有
unique
约束的
ForeignKey
,不是更清楚吗。注意:如果您这样做,然后尝试扩展您的用户模型,创建自定义用户模型,您需要将其更改为settings.AUTH_USER_MODEL,正如Anton Strogonoff在他的-更正确的IMO-answer中所说,如果您的关系是一对一,则使用OneToOneField,并为Django的较新版本添加
primary_key=True
,ForeignKey要求您在_delete=models.CASCADE或其他方面指定
。我更改了代码以注意将版本号视为十进制数。毕竟,1.10版被认为高于1.5版,如果我们将它们视为十进制数字,这是不正确的。@Flimm对我来说很好,反正不喜欢与十进制一起跳舞。元组比较胜过它(可能稍微不那么直观,但它是有效的!)