Django 遇到的坑

#1 环境

Python3.6
Django==2.0.7
celery==3.1.23
django-celery==3.2.2
django-crontab==0.7.1
django-filter==2.0.0
django-redis==4.9.0
djangorestframework==3.8.2
djangorestframework-filters==0.10.2
djangorestframework-jwt==1.11.0
drf-dynamic-fields==0.3.0
redis==2.10.6
requests==2.20.1

#2 Models

#2.1 默认值

在Django中建表时,允许给字段设置默认值,但是使用ORM插数据和使用原生的SQL插数据,有很大的不同

  • 使用ORM插数据
models.Student.objects.create(name="cox") # 假设age字段有默认值 age = 12

可以正常生成一行数据,并且age赋值默认值12

  • 使用原生SQL插数据
use mysql_db;
INSERT INTO Student (name) VALUES("cox");

会报错,age没有设置默认值

为什么明明在models中设置了age默认值是12,用原生sql插数据时,会报错???

  • 解决

因为ORM语句和Mysql之间,还有一层models,把ORM编译成原生的SQL时,SQL并没有默认值,并没有!!!然后通过models里面设置的默认值,把默认值加进去,也就是说,models设置的默认值并不是对mysql的字段设置默认值,而是在插入数据前,把默认值加到原生SQl语句中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值