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

扩展Django Abstract User Model时提示表不存在的问题

解决Django扩展AbstractUser后表不存在的问题

问题核心

自定义Student继承AbstractUser并配置AUTH_USER_MODEL后,执行迁移仍提示mainApp_student表不存在,问题出在模型代码错误和迁移执行步骤不完整。

修复步骤

1. 修正模型代码

你的模型存在两处关键错误,会导致迁移无法正确生成:

  • address直接以类属性拼接字段对象,Django无法识别为有效字段;
  • code字段的MinValueValidator参数传递错误,语法不符合要求。

修正后的模型代码:

from django.db import models
from django.contrib.auth.models import AbstractUser
from django.core.validators import MinValueValidator, MaxValueValidator
import datetime

class Student(AbstractUser):
    birth = models.DateField(default=datetime.date.today)
    street = models.CharField(max_length=20)
    street_number = models.IntegerField(validators=[MinValueValidator(0), MaxValueValidator(99)])
    city = models.CharField(max_length=20)
    province = models.CharField(max_length=20)
    code = models.IntegerField(validators=[MinValueValidator(0), MaxValueValidator(9999)])

    @property
    def address(self):
        return f"{self.street} {self.street_number}, {self.city} {self.code}, {self.province}"

    def __str__(self):
        return f'Adresse: {self.address}'

2. 重新执行迁移

自定义用户模型会替换Django默认的auth用户表,仅执行migrate mainApp会跳过关联的auth模块迁移,需按以下步骤操作:

  • 开发环境下,删除项目根目录的db.sqlite3数据库文件;
  • 删除mainApp/migrations目录下除__init__.py外的所有迁移文件;
  • 执行命令:
python manage.py makemigrations
python manage.py migrate

3. 配置Admin后台(可选)

要在Admin中管理Student模型,需在mainApp/admin.py中注册:

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from .models import Student

admin.site.register(Student, UserAdmin)

验证

重启Django服务后访问/admin/,后台应正常加载,mainApp_student表已生成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 22:20:33