Python ModelForm没有指定模型类。[django]

Python ModelForm没有指定模型类。[django],python,django,authentication,Python,Django,Authentication,在我的表格中我有: 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)

在我的表格中我有:

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")
在myproject settings.py中,我设置了

AUTH_USER_MODEL = 'user.Profile'
它给了我

ValueError at /user/register 
ModelForm has no model class specified.
当我将
我的表格中的class Meta更改为:

class Meta:

        model = Profile   <--- HERE
类元:
model=Profile您可以使用获取对指定为
AUTH\u USER\u model
的模型的引用:

from django.contrib.auth import get_user_model

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 = get_user_model()
        fields = ('username', 'email')

locate做什么?也许
locate
方法不返回模型类?locate应该转到“设置”并从那里获取:AUTH\u USER\u model='USER.Profile'@AM0k:问题是
'USER.Profile'
不是有效的合格名称。这应该是
user.models.Profile
(但您不能使用它,因为Django使用的命名系统略有不同)。您可以使用
应用程序。获取用户模型(…)
但是对于用户模型,您可以直接使用
获取用户模型()
。非常感谢。。。我的解决方案和我的完全一样。没关系,我的工作
from django.contrib.auth import get_user_model

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 = get_user_model()
        fields = ('username', 'email')
from django.apps import apps
from django import forms

# name of the model
model_name = 'app_name.ModelName'

class MyModelForm(forms.ModelForm):
    class Meta:
        model = apps.get_model(model_name)
        fields = '__all__'