Django 表单给出 'str' 对象没有属性 '_meta'
Django forms gives 'str' object has no attribute '_meta'
我正在制作一个如下所示的自定义用户模型
accounts/models.py
class MyUser(AbstractUser):
role_tuple = (
('admin', 'admin'),
('user', 'user'),
('activist', 'activist'),
)
role = models.CharField(null = True, default='user', max_length = 200, choices = role_tuple)
user_proof_image = models.ImageField(null=True, upload_to='user_proof_images')
添加到 settings.py
AUTH_USER_MODEL = 'accounts.MyUser'
我现在想使用自定义用户模型创建一个表单,所以我使用了
from django.contrib.auth.forms import UserCreationForm
from CPW.settings import AUTH_USER_MODEL
class CreateUserForm(UserCreationForm):
class Meta:
model = AUTH_USER_MODEL
fields = ['username', 'email', 'password1', 'password2', 'role']
但它告诉我
from .forms import CreateUserForm
File "C:\Users\xyz\OneDrive\Desktop\Django\CPW\user_auth\forms.py", line 4, in <module>
class CreateUserForm(UserCreationForm):
File "C:\Users\xyz\AppData\Local\Programs\Python\Python37\lib\site-packages\django\forms\models.py", line 258, in __new__
apply_limit_choices_to=False,
File "C:\Users\xyz\AppData\Local\Programs\Python\Python37\lib\site-packages\django\forms\models.py", line 142, in fields_for_model
opts = model._meta
AttributeError: 'str' object has no attribute '_meta'
我从未尝试过自定义用户的形式。有帮助吗?
AUTH_USER_MODEL
是一个包含 <i>app_name</i>.<i>ModelName</i>[= 的字符串23=] 的用户模型。您可以在 <code>ForeignKey
等关系中使用它,但不能在 ModelForm
中使用。您可以使用 get_user_model()
function [Django-doc]:
from django.contrib.auth import <strong>get_user_model</strong>
from django.contrib.auth.forms import UserCreationForm
class CreateUserForm(UserCreationForm):
class Meta:
model = <strong>get_user_model()</strong>
fields = ['username', 'email', 'password1', 'password2', 'role']
我正在制作一个如下所示的自定义用户模型
accounts/models.py
class MyUser(AbstractUser):
role_tuple = (
('admin', 'admin'),
('user', 'user'),
('activist', 'activist'),
)
role = models.CharField(null = True, default='user', max_length = 200, choices = role_tuple)
user_proof_image = models.ImageField(null=True, upload_to='user_proof_images')
添加到 settings.py
AUTH_USER_MODEL = 'accounts.MyUser'
我现在想使用自定义用户模型创建一个表单,所以我使用了
from django.contrib.auth.forms import UserCreationForm
from CPW.settings import AUTH_USER_MODEL
class CreateUserForm(UserCreationForm):
class Meta:
model = AUTH_USER_MODEL
fields = ['username', 'email', 'password1', 'password2', 'role']
但它告诉我
from .forms import CreateUserForm
File "C:\Users\xyz\OneDrive\Desktop\Django\CPW\user_auth\forms.py", line 4, in <module>
class CreateUserForm(UserCreationForm):
File "C:\Users\xyz\AppData\Local\Programs\Python\Python37\lib\site-packages\django\forms\models.py", line 258, in __new__
apply_limit_choices_to=False,
File "C:\Users\xyz\AppData\Local\Programs\Python\Python37\lib\site-packages\django\forms\models.py", line 142, in fields_for_model
opts = model._meta
AttributeError: 'str' object has no attribute '_meta'
我从未尝试过自定义用户的形式。有帮助吗?
AUTH_USER_MODEL
是一个包含 <i>app_name</i>.<i>ModelName</i>[= 的字符串23=] 的用户模型。您可以在 <code>ForeignKey
等关系中使用它,但不能在 ModelForm
中使用。您可以使用 get_user_model()
function [Django-doc]:
from django.contrib.auth import <strong>get_user_model</strong>
from django.contrib.auth.forms import UserCreationForm
class CreateUserForm(UserCreationForm):
class Meta:
model = <strong>get_user_model()</strong>
fields = ['username', 'email', 'password1', 'password2', 'role']