簡體   English   中英

如何在Django 1.5中使用'User'作為外鍵

[英]How to use 'User' as foreign key in Django 1.5

我制作了一個自定義配置文件模型,如下所示:

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

但它給出了同樣的錯誤。 哪里我錯了,如何解決這個問題?

正是在Django 1.5 中引入AUTH_USER_MODEL設置,允許使用具有auth系統的自定義用戶模型。

如果您正在編寫一個旨在與Django 1.5到1.10及更高版本的項目一起使用的應用程序,這是引用用戶模型的正確方法(現在可以與django.contrib.auth.models.User不同):

class UserProfile(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL)
  • 有關詳細信息,請參閱文檔

如果您正在編寫一個支持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())

改變這個:

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

對此:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM