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
在Django中建表时,允许给字段设置默认值,但是使用ORM插数据和使用原生的SQL插数据,有很大的不同
models.Student.objects.create(name="cox") # 假设age字段有默认值 age = 12
可以正常生成一行数据,并且age赋值默认值12
use mysql_db;
INSERT INTO Student (name) VALUES("cox");
会报错,age没有设置默认值
为什么明明在models中设置了age默认值是12,用原生sql插数据时,会报错???
因为ORM语句和Mysql之间,还有一层models,把ORM编译成原生的SQL时,SQL并没有默认值,并没有!!!然后通过models里面设置的默认值,把默认值加进去,也就是说,models设置的默认值并不是对mysql的字段设置默认值,而是在插入数据前,把默认值加到原生SQl语句中