python - 如何在 Django 1.5 中使用 'User' 作为外键

标签 python python-3.x django foreign-keys 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.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' has a relation with model User, which has either not been installed or is abstract.

我也试过了:

from django.contrib.auth.models import BaseUserManager, AbstractUser

但它给出了同样的错误。我错在哪里以及如何解决这个问题?

最佳答案

正是在 Django 1.5 中,AUTH_USER_MODEL 设置 was introduced , 允许使用带有身份验证系统的自定义用户模型。

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

class UserProfile(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL)
  • docs了解更多详情。

如果您正在编写一个支持 Django 1.4 的可重用应用程序,那么您可能应该通过检查 Django 版本来确定要使用的引用,可能像这样:

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

关于python - 如何在 Django 1.5 中使用 'User' 作为外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19433630/

相关文章:

python - 在Python中打印美元符号

python - 循环遍历 Django 上下文值

python - 更新/合并和更新列 pandas 的子集

python - 属性错误 : module 'tensorflow' has no attribute 'get_variable'

python - 使用beautifulsoup和python提取标签信息

python - 将生成器对象转换为列表

python - Object_list 在模板中未显示正确的数据

python - 如何从url中获取变量

jquery - Django jquery ajax 403错误

django - Django中模板和静态文件的位置