Django数据库如何在原有表中添加新字段
作者:北望灬CTO
这篇文章主要介绍了Django数据库如何在原有表中添加新字段问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
Django数据库在原有表中添加新字段
(注:本人用的pycharm开发工具)
1、在你要添加新字段的app的 models.py 文件中添加需要新增的字段(这里新增的是dress字段):
from django.db import models # Create your models here. class Test(models.Model): name=models.CharField(max_length=20) age=models.IntegerField(blank=True,null=True) sex=models.CharField(max_length=2) dress=models.CharField(max_length=1000)
2、在工程目录打开命令行窗口输入:python manage.py makemigrations AppTest(个人App文件名)
(我的是pycharm,如图)
3、输入:1(这里要求你设置新建字段的默认值,它会在新建这个字段的同时把默认值也添加上去,)
4、如果不想让它有值,我们直接输''(中间没有空格),一样能达到效果,但是不能不设置默认值,(如果是数值类型呢,默认值为 ''不行,如果是年龄,需设置blank=True和null=True。)
- blank:设置为True时,字段可以为空。设置为False时,字段是必须填写的。字符型字段CharField和TextField是用空字符串来存储空值的。如果为True,字段允许为空,默认不允许.
- null:设置为True时,django用Null来存储空值。日期型、时间型和数字型字段不接受空字符串。所以设置IntegerField,DateTimeField型字段可以为空时,需要将blank,null均设为True。如果为True,空值将会被存储为NULL,默认为False。如果想设置BooleanField为空时可以选NullBooleanField型字段。
5、最后输入:python manage.py migrate
查看数据库,新字段已经加进去了,如果你设置了默认值,原来的这些数据的值都会设为你设置的默认值。
Django无法添加新字段,django.db.utils.OperationalError: (1050, "Table app already exists")
要修改的表长这样,我要添加一个叫做category的字段
class AppInfo(models.Model): name = models.CharField(max_length=255, null=True) version = models.CharField(max_length=50, null=True) category = models.CharField(max_length=30, null=True)##这一行是我要新添加的
无论是python makemigartions 还是python migrate都有问题,上网上查了一圈也都有问题,用了什么--fake也没用,最后这样解决了
python manage.py shell >>> from django.db import connection >>> cursor = connection.cursor() >>> cursor.execute('ALTER TABLE appId_appinfo add category varchar(30) default ""')
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。