python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Django数据库在原有表中添加新字段

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。) 

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 ""')

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文