【发布时间】:2020-10-04 19:02:16
【问题描述】:
在我的表格中,我有:
from pydoc import locate
from django import forms
from django.conf import settings
from django.contrib.auth.forms import UserCreationForm, UsernameField
from django.core.validators import EmailValidator
class SignUpForm(UserCreationForm):
username = UsernameField(label=_("Username"), widget=forms.TextInput(), )
email = forms.EmailField(max_length=254, label="Email", widget=forms.EmailInput(), validators=[EmailValidator])
class Meta:
model = locate(settings.AUTH_USER_MODEL) <--- HERE
fields = ("username", "email", "password1", "password2")
在模型中的用户应用中:
class Profile(AbstractUser):
def __str__(self):
return self.username
在我的project settings.py中我设置了
AUTH_USER_MODEL = 'user.Profile'
它给了我
ValueError at /user/register
ModelForm has no model class specified.
当我将 in 我的 form 类 Meta 更改为:
class Meta:
model = Profile <--- HERE
一切正常。为什么我的 model = locate(settings.AUTH_USER_MODEL) 不起作用?
【问题讨论】:
-
定位是做什么的?
-
也许
locate方法没有返回模型类? -
locate 应该转到设置并从那里获取:AUTH_USER_MODEL = 'user.Profile'
-
@AM0k:问题在于
'user.Profile'不是有效的限定名称。那应该是user.models.Profile(但你不能使用它,因为 Django 使用稍微不同的命名系统)。可以使用apps.get_model(..),但是对于用户模型,可以直接使用get_user_model())。 -
非常感谢...我有与我的完全相同的解决方案。没关系,我不工作
标签: python django authentication