You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django自定义用户模型创建表单报'str'对象无'_meta'属性如何解决?

错误原因

你在表单的Meta类中给model属性赋值的AUTH_USER_MODEL是从配置文件导入的字符串值(内容为accounts.MyUser),但Django的ModelForm要求model属性必须传入实际的模型类对象,字符串没有_meta属性,所以触发了这个报错。

解决方案

方案1:直接导入自定义用户模型

直接从accounts.models导入你定义的MyUser类赋值给model属性即可,修改后的表单代码如下:

from django.contrib.auth.forms import UserCreationForm
from accounts.models import MyUser

class CreateUserForm(UserCreationForm):
    class Meta:
        model = MyUser
        fields = ['username', 'email', 'password1', 'password2', 'role']

方案2:使用get_user_model()方法获取用户模型(更推荐)

如果后续你可能修改AUTH_USER_MODEL配置,用Django内置的get_user_model()方法会更灵活,它会自动读取配置返回对应用户模型类,写法不依赖具体的模型导入路径,适配性更强,即使后续调整用户模型的配置也不需要修改表单代码,代码如下:

from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth import get_user_model

User = get_user_model()

class CreateUserForm(UserCreationForm):
    class Meta:
        model = User
        fields = ['username', 'email', 'password1', 'password2', 'role']

内容的提问来源于stack exchange,提问作者Milanor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 18:18:04