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
相关产品推荐
相关产品推荐

