我看过几篇关于在settings.py中设置AUTH_USER_MODEL
的最佳实践的帖子和read the documentation,但没有看到任何关于如何设置的实际示例。我尝试了几种配置,但不断出现以下错误:
django.core.exceptions.ImproperlyConfigured: AUTH_USER_MODEL refers to model 'auth.User' that has not been installed
它甚至没有告诉我错误发生在哪里。以下是我尝试过的方法:
方法1:
from django.contrib.auth import get_user_model
User = get_user_model()
然后我会像这样引用我的用户:
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
方法2:
from django.contrib.auth.models import User
两者都不起作用,如果我只想使用标准用户模型,我不确定如何在settings.py中设置AUTH_USER_MODEL
。我根本没有自定义用户对象。我假设有点像AUTH_USER_MODEL = 'django.contrib.auth.models.User'
,但我不确定
现在我明白了:
AttributeError: 'str' object has no attribute '_meta'
用户/forms.py
from django import forms
from django.conf import settings
from django.contrib.auth.forms import UserCreationForm
from .models import Profile
class UserRegisterForm(UserCreationForm):
email = forms.EmailField()
class Meta:
model = settings.AUTH_USER_MODEL
fields = ['username', 'email', 'password1', 'password2']
class UserUpdateForm(forms.ModelForm):
email = forms.EmailField()
class Meta:
model = settings.AUTH_USER_MODEL
fields = ['username', 'email']
您使用
app_name.ModelName
引用模型,因此在本例中:这也是的默认值,因此如果您想使用Django的用户模型,只需省略
settings.py
中的AUTH_USER_MODEL
设置即可此外,您需要将
django.contrib.auth
添加到INSTALLED_APPS
中,以便:在
ModelForm
、ModelSerializer
等中,使用get_user_model()
获取对用户模型类的引用:你可以这么做
型号.py
我同意威廉的观点。如果你想保留这个,我推荐如下
在你的方法1中
然后在views.py中,使用
get_user_model()
而不是User
。 我希望对你的情况有效相关问题 更多 >
编程相关推荐