[英]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.