前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django 遇到的坑

Django 遇到的坑

作者头像
Autooooooo
发布2020-11-09 11:30:27
3970
发布2020-11-09 11:30:27
举报
文章被收录于专栏:CoxhuangCoxhuang

#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语句中

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-02-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • #1 环境
  • #2 Models
    • #2.1 默认值
    相关产品与服务
    云数据库 SQL Server
    腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档