10、ORM修改表

前面我们讲到,在models.py里面创建类之后,执行命令:

python manage.py makemigrations
python manage.py migrate

可以在数据库里面创建表,同样我们也可以对表结构、数据进行修改

1、删除表、删除表的列

同理
在做表的删除、表结构列删除时,同样可以
做法是注释掉一个类,或者某个属性
再执行下面的命令:

python manage.py makemigrations
python manage.py migrate

2、新增表的列

 django里面在新增列的时候方式不同,我现在给类新增一个属性值

from django.db import models

# Create your models here.


class UserInfo(models.Model):
    name = models.CharField(max_length=32)
    password = models.CharField(max_length=64)
    age = models.IntegerField()
    address = models.CharField(max_length=100)   # 新增列

执行命令:python manage.py makemigrations

结果会出现下面的提示:

D:\mysite>python manage.py makemigrations
It is impossible to add a non-nullable field 'address' to userinfo without specifying a default. This is because the database needs something to populate existing rows.
Please select a fix:
 1) Provide a one-off default now (will be set on all existing rows with a null value for this column)
 2) Quit and manually define a default value in models.py.
Select an option:

要你选择,1表示你新增了一列,自己设定默认值,2表示退出选择,使用默认的值
选择1,会提示要你继续输入
选择2,退出,需要你去代码里面给出默认值

我们来看2的做法:
设置一个默认值.

from django.db import models

# Create your models here.


class UserInfo(models.Model):
    name = models.CharField(max_length=32)
    password = models.CharField(max_length=64)
    age = models.IntegerField()
    address = models.CharField(max_length=100, default='武汉')   # 新增列,设定一个默认值

其实还有3的做法,就是新增列的时候允许为空:

from django.db import models

# Create your models here.


class UserInfo(models.Model):
    name = models.CharField(max_length=32)
    password = models.CharField(max_length=64)
    age = models.IntegerField()
    address = models.CharField(max_length=100, null=True, blank=True)   # 新增列,允许为空

OK,修改完类之后,执行命令更新数据库

3、小结

我们需要修改表结构的时候
去对应的models.py里面修改类,然后执行:

python manage.py makemigrations
python manage.py migrate

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值