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

Django执行makemigrations时admin_db应用模型字段全部被忽略如何解决

问题根因

你编写的Admin模型中所有自定义字段,都使用了Python类型注解语法(冒号:声明),而Django ORM要求字段必须以类属性赋值的方式(等号=赋值)声明,迁移生成逻辑只会识别赋值类属性作为模型字段,类型注解不会被识别,这就是字段全部被忽略的原因。

修正后的模型代码
from django.db import models
from datetime import datetime


class Admin(models.Model):
    # 所有字段声明将冒号改为等号即可被Django识别
    Admin_Email = models.EmailField(primary_key=True, editable=False)
    First_name = models.CharField(max_length=25)
    Last_name = models.CharField(max_length=25)
    Gender = models.CharField(max_length=1)
    Date_of_registration = models.DateField(default=datetime.now, editable=False)
    Date_of_Birth = models.DateField()
    # 额外提示:BigIntegerField本身不支持max_length参数,如需限制长度建议改用CharField加数字正则校验
    CNIC = models.BigIntegerField(unique=True)
    City = models.CharField(max_length=50)
    Area = models.CharField(max_length=50)
    Address = models.CharField(max_length=100)
    # 同上,BigIntegerField无max_length参数
    Phone_num = models.BigIntegerField(unique=True)


class Salt(models.Model):
    Admin_email = models.OneToOneField(Admin, on_delete=models.CASCADE)
    Salt = models.CharField(max_length=25, unique=True)


class Password(models.Model):
    Admin_email = models.OneToOneField(Admin, on_delete=models.CASCADE)
    hash = models.CharField(max_length=255, unique=True)
后续操作步骤
  • 删除之前生成的错误迁移文件 admin_db/migrations/0001_initial.py
  • 执行 python manage.py makemigrations admin_db 重新生成迁移文件,此时Admin模型的所有自定义字段都会被正常识别
  • 执行 python manage.py migrate 即可将字段同步到MySQL数据库

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 08:15:01