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

Django自定义用户模型提交注册表单报Manager isn't available错误求助

问题原因
  • 表单继承逻辑错误:UserCreationForm是Django原生专门用于用户模型的注册表单,你在表单的Meta类中错误将model指定为业务模型Consumer/Workman,而非你自定义的accounts.User模型,导致表单内部调用默认auth.User的管理器触发报错。
  • 类名拼写错误:表单内部的配置类名应该是大写开头的Meta,你写成了小写的meta,导致自定义配置完全不生效,表单会继承UserCreationForm默认绑定的auth.User模型。
解决方案

1. 修正forms.py代码

调整表单的绑定模型,重写save方法同步创建业务侧的Consumer/Workman实例:

from django.contrib.auth.forms import UserCreationForm
from django import forms
from .models import User, Consumer, Workman

class ConsumerCreationForm(UserCreationForm):
    location = forms.CharField(max_length=100, required=False)
    # 正确配置大写的Meta类,绑定自定义用户模型
    class Meta(UserCreationForm.Meta):
        model = User
        # 可根据需求扩展需要填写的用户字段
        fields = UserCreationForm.Meta.fields + ('email',)
    
    # 重写save方法同步创建消费者实例
    def save(self, commit=True):
        user = super().save(commit=False)
        user.is_consumer = True
        user.type = User.Types.CONSUMER
        if commit:
            user.save()
            Consumer.objects.create(user=user, location=self.cleaned_data.get('location'))
        return user

class WorkmanCreationForm(UserCreationForm):
    contact = forms.CharField(max_length=100)
    class Meta(UserCreationForm.Meta):
        model = User
        fields = UserCreationForm.Meta.fields + ('email',)
    
    # 重写save方法同步创建工人实例
    def save(self, commit=True):
        user = super().save(commit=False)
        user.is_workman = True
        user.type = User.Types.WORKMAN
        if commit:
            user.save()
            Workman.objects.create(user=user, contact=self.cleaned_data.get('contact'))
        return user

2. 可选调整views.py配置

因为现在表单已经绑定了自定义User模型,原来的CreateView中指定的model=Consumer/model=Workman可以删除,或者保留也不影响运行。

额外校验:确认你的settings.py中已经正确配置AUTH_USER_MODEL = 'accounts.User'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:15:02