ORM操作
select * from tb where id > 1
# 对应关系
models.tb.objects.filter(id__gt=1)
models.tb.objects.filter(id=1)
models.tb.objects.filter(id__lt=1)

创建类

a. 先写类
from django.db import models

# app01_userinfo
class UserInfo(models.Model):
# id列,自增,主键
# 用户名列,字符串类型,指定长度
username = models.CharField(max_length=32)
password = models.CharField(max_length=64)

b. 注册APP

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01',
]
c. 执行命令
python manage.py makemigrations
python manage.py migrate

d. ********** 注意 ***********
Django默认使用MySQLdb模块链接MySQL
主动修改为pymysql,在project同名文件夹下的__init__文件中添加如下代码即可:
import pymysql
pymysql.install_as_MySQLdb()

1. 根据类自动创建数据库表
# app下的models.py

python manage.py makemigrations
python manage.py migrate

字段:
字符串类型

数字

时间

二进制

自增(primary_key=True)

字段的参数:
null -> db是否可以为空
default -> 默认值
primary_key -> 主键
db_column -> 列名
db_index -> 索引
unique -> 唯一索引
unique_for_date ->
unique_for_month
unique_for_year
auto_now -> 创建时,自动生成时间
auto_now_add -> 更新时,自动更新为当前时间

# obj = UserGroup.objects.filter(id=1).update(caption='CEO')
# obj = UserGroup.objects.filter(id=1).first()
# obj.caption = "CEO"
# obj.save()

choices -> django admin中显示下拉框,避免连表查询
blank -> django admin是否可以为空
verbose_name -> django admin显示字段中文
editable -> django admin是否可以被编辑
error_messages -> 错误信息欠
help_text -> django admin提示
validators -> django form ,自定义错误信息(欠)

创建 Django 用户:python manage.py createsuperuser

2. 根据类对数据库表中的数据进行各种操作

一对多:

a. 外检
b.
外键字段_id
c.
models.tb.object.create(name='root', user_group_id=1)

d.

userlist = models.tb.object.all()
for row in userlist:
row.id
row.user_group_id
row.user_group.caption

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

a. 创建类和字段
class User(models.Model):
age = models.IntergerFiled()
name = models.CharField(max_length=10)#字符长度

Python manage.py makemigrations
python manage.py migrate

# settings.py 注册APP

b. 操作
王赛鹏


models.User.objects.create(name='qianxiaohu',age=18)
dic = {'name': 'xx', 'age': 19}
models.User.objects.create(**dic)

obj = models.User(name='qianxiaohu',age=18)
obj.save()

models.User.objects.filter(id=1).delete()

models.User.objects.filter(id__gt=1).update(name='alex',age=84)
dic = {'name': 'xx', 'age': 19}
models.User.objects.filter(id__gt=1).update(**dic)

models.User.objects.filter(id=1,name='root')
models.User.objects.filter(id__gt=1,name='root')
models.User.objects.filter(id__lt=1)
models.User.objects.filter(id__gte=1)
models.User.objects.filter(id__lte=1)

models.User.objects.filter(id=1,name='root')
dic = {'name': 'xx', 'age__gt': 19}
models.User.objects.filter(**dic)

v1 = models.Business.objects.all()
# QuerySet ,内部元素都是对象

# QuerySet ,内部元素都是字典
v2 = models.Business.objects.all().values('id','caption')
# QuerySet ,内部元素都是元组
v3 = models.Business.objects.all().values_list('id','caption')

# 获取到的一个对象,如果不存在就报错
models.Business.objects.get(id=1)
对象或者None = models.Business.objects.filter(id=1).first()

外键:
v = models.Host.objects.filter(nid__gt=0)
v[0].b.caption ----> 通过.进行跨表

外键:
class UserType(models.Model):
caption = models.CharField(max_length=32)
id caption
# 1,普通用户
# 2,VIP用户
# 3, 游客

class User(models.Model):
age = models.IntergerFiled()
name = models.CharField(max_length=10)#字符长度
# user_type_id = models.IntergerFiled() # 约束,
user_type = models.ForeignKey("UserType",to_field='id') # 约束,

name age user_type_id
# 张扬 18 3
# 张A扬 18 2
# 张B扬 18 2

转载于:https://www.cnblogs.com/topzhao/p/9297054.html

django ORM 操作相关推荐

  1. Django ORM操作

    Django ORM操作 一般操作 看专业的官网文档,做专业的程序员! 必知必会13条 <1> all(): 查询所有结果<2> get(**kwargs): 返回与所给筛选条 ...

  2. Django - ORM操作

    Django - ORM操作 一. 必知必会13条 单表查询之神奇的双下划线 二. ForeignKey操作 正向查找 反向操作 三. ManyToManyField 四. 聚合查询和分组查询 聚合 ...

  3. django orm原理_django 动态创建一个模型的多个table name, 并通过 Django ORM 操作

    动态创建table, 并通过 Django ORM 操作. 动态的创建表 动态的创建模型其实就是在运行时生成 Model 类, 这个可以通过函数实现, 通过传参(今天的日期, 如: 20181211) ...

  4. django mysql orm教程_带你了解Django ORM操作(基础篇)

    前言 在日常开发中,需要大量对数据库进行增删改查操作. 如果头铁的话,使用原生SQL是最好的,毕竟性能又高,又灵活. 但是通常情况下,我们不是太需要那么苛刻的性能,也没有那么多刁钻的需求用原生SQL ...

  5. Django ORM

    Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...

  6. 第十八 django及ORM操作

    一.项目及ORM操作 1.添加新项目 python manage.py startapp blog 2.配置数据库类 models.py from django.db import models# C ...

  7. Django 之ORM操作

    1.什么是ORM? 全称关系对象映射Object Relational Mapping(简称ORM),是通过描述面向对象与数据库之间的对应的元数据,将对象持久化的更新到数据库中. 有了ORM,就不需要 ...

  8. Django ORM那些相关操作

    一般操作 https://docs.djangoproject.com/en/1.11/ref/models/querysets/         官网文档 常用的操作 <1> all() ...

  9. 【Django】ORM操作#2

    目录 必知必会的13条查询方法 单表查询之神奇的双下划线 一对多 ForeignKey 多对多 ManyToManyField 在Python脚本中调用Django环境 Django终端打印SQL语句 ...

最新文章

  1. SDK开发日积月累(二)
  2. redis在微服务领域的贡献
  3. Mysql当前的根密码核查_在MySQL数据库中复位根用户的密码的方法
  4. Apache Solr入门教程(初学者之旅)
  5. fedora8完美DNS教程
  6. ReactNative生成android平台的bundle文件命令
  7. 图像阈值处理cv2.threshold()函数(python)
  8. ubuntu中安装wmware-tools
  9. 快来围观一下JavaScript的Proxy
  10. 数据结构与算法之双链表的操作
  11. 形式验证进阶 chipdriver_【饥荒进阶】烹饪基础:全食材系数详解-五耀整理
  12. Django【跨域】
  13. Multi-Loss Weighting with Coefficient of Variations 多任务学习
  14. 制图小课堂:美国机场可视化黑白围棋风格专题
  15. 生物特征识别六大技术,你知道多少?
  16. Angular入门-Hero Editor抽丝
  17. VGA数模转换电阻匹配网络分析
  18. java中函数的调用,java中如何调用函数
  19. 总结在java编程中的经验教训
  20. C++刻晴炸弹人小游戏(开发环境为codeblocks)

热门文章

  1. 如何建设移动 DevOps?
  2. 星辰大海:阿里数据体验技术揭秘!
  3. 怎么能学好Java开发,学好Java一般需要多少钱
  4. Vue视频教程系列第三十七节-子路由地配置
  5. 《炉石传说》架构设计赏析(2):Scene管理
  6. Python编程专属骚技巧7
  7. Oracle的AWR报告分析
  8. 55. Jump Game
  9. OEL6.8安装虚拟带库模拟器
  10. Linux学习 - 文件包处理命令