Django基础(四)----ORM、Admin的使用、单表查询中的双下划线、关系字段

ORM

用户增删改查

  1. 将用户保存到数据库。
    (1)创建模型类,生成对应的数据库表格
    Django基础(四)----ORM、Admin的使用、单表查询中的双下划线、关系字段_第1张图片
    在命令行下执行
    a. 同步数据库 : python manage.py makemigrations
    b. 写入数据库: python manage.py migrate
    Django基础(四)----ORM、Admin的使用、单表查询中的双下划线、关系字段_第2张图片
    在这里插入图片描述
    Django基础(四)----ORM、Admin的使用、单表查询中的双下划线、关系字段_第3张图片(2)将表单数据保存到数据库

格式:
a. 类名.objects.create()
b. 类实例化:obj=类(属性=XX) obj.save()

Django基础(四)----ORM、Admin的使用、单表查询中的双下划线、关系字段_第4张图片
Django基础(四)----ORM、Admin的使用、单表查询中的双下划线、关系字段_第5张图片
在这里插入图片描述

  1. 显示用户列表
    语法: 类名.objects.all() 获取所有记录。
    Django基础(四)----ORM、Admin的使用、单表查询中的双下划线、关系字段_第6张图片
    在这里插入图片描述
    Django基础(四)----ORM、Admin的使用、单表查询中的双下划线、关系字段_第7张图片
  2. 删除用户
    (1)语法:
    ①类名.objects.get(xxx).delete()
    ②类名.objects.filter(xxx).delete()
    Django基础(四)----ORM、Admin的使用、单表查询中的双下划线、关系字段_第8张图片
    Django基础(四)----ORM、Admin的使用、单表查询中的双下划线、关系字段_第9张图片

Django基础(四)----ORM、Admin的使用、单表查询中的双下划线、关系字段_第10张图片

  1. 修改用户
    (1)语法:
    ①obj =类名.objects.get(‘xxx’)
    obj.zz = xx
    obj.save()
    ②类名.objects.filter(‘xxx’).update(‘xxxx’)
    Django基础(四)----ORM、Admin的使用、单表查询中的双下划线、关系字段_第11张图片
    在这里插入图片描述
    Django基础(四)----ORM、Admin的使用、单表查询中的双下划线、关系字段_第12张图片Django基础(四)----ORM、Admin的使用、单表查询中的双下划线、关系字段_第13张图片

Admin使用

进入自带Admin后台步骤:

  1. 创建超级用户 python manage.py createsuperuser
    Django基础(四)----ORM、Admin的使用、单表查询中的双下划线、关系字段_第14张图片

  2. 注册model类
    Django基础(四)----ORM、Admin的使用、单表查询中的双下划线、关系字段_第15张图片

  3. 访问 admin 管理页面
    Django基础(四)----ORM、Admin的使用、单表查询中的双下划线、关系字段_第16张图片
    Django基础(四)----ORM、Admin的使用、单表查询中的双下划线、关系字段_第17张图片
    Django基础(四)----ORM、Admin的使用、单表查询中的双下划线、关系字段_第18张图片修改成中文
    Django基础(四)----ORM、Admin的使用、单表查询中的双下划线、关系字段_第19张图片注意:ImageField()字段需要借助pillow模块才能使用,因此需要先下载pillow模块。
    Django基础(四)----ORM、Admin的使用、单表查询中的双下划线、关系字段_第20张图片

单表查询之神奇的双下划线

models.Tb1.objects.filter(id__lt=10, id__gt=1)  、
# 获取id大于1 且 小于10的值
models.Tb1.objects.filter(id__in=[11, 22, 33])   
# 获取id等于11、22、33的数据
models.Tb1.objects.exclude(id__in=[11, 22, 33])  # not in
models.Tb1.objects.filter(name__contains="ven")  # 获取name字段包含"ven"的
models.Tb1.objects.filter(name__icontains="ven") # icontains大小写不敏感
models.Tb1.objects.filter(id__range=[1, 3])      
# id范围是1到3的,等价于SQL的bettwen and
类似的还有:startswith,istartswith, endswith, iendswith 
date字段还可以:
models.Class.objects.filter(first_day__year=2017)

Django基础(四)----ORM、Admin的使用、单表查询中的双下划线、关系字段_第21张图片
关系字段

  1. 一对多
    外键类型在ORM中用来表示外键关联关系,一般把ForeignKey字段设置在 '一对多’中’多’的一方。
    例如:一个学科对应多个学生,一个学生对应一个学科。
    Django基础(四)----ORM、Admin的使用、单表查询中的双下划线、关系字段_第22张图片字段: ForeignKey
    字段参数:
    to : 设置要关联的表。
    to_field : 设置要关联的表的字段。 默认关联的是表的id。
    如果想关联其他字段名称可以使用此字段。
    on_delete: 当删除关联表中的数据时,当前表与其关联的行的行为。
    models.CASCADE :删除关联数据,与之关联也删除。
    models.DO_NOTHING:删除关联数据,引发错误IntegrityError。
    models.PROTECT: 删除关联数据,引发错误ProtectedError。

正向查询和反向查询:
注意:
1.正向查询是指从有外键的一方查找另外一方。
2.反向查询是指从没有外键的一方查找有外键的一方。
3.不管是正向还是反向进行对象查找的时候获取的是对象而不是QuerySet集合。
4.正向查询语法:
obj.外键字段(关联字段) -->> 获取对象。
obj.外键字段(关联字段).字段–>> 获取对象对应的字段值。
5.反向查询语法:
obj.表名_set.xxx
Django基础(四)----ORM、Admin的使用、单表查询中的双下划线、关系字段_第23张图片

  1. 多对多
    用于表示多对多的关联关系。在数据库中通过第三张表来建立关联关系。
    字段: ManyToManyField
    字段参数to: 设置要关联的表
    注意: 正向查询和反向查询同一对多规则。

例如:一个老师对应多个学生,一个学生对应多个老师。
Django基础(四)----ORM、Admin的使用、单表查询中的双下划线、关系字段_第24张图片Django基础(四)----ORM、Admin的使用、单表查询中的双下划线、关系字段_第25张图片

一对一
一对一的关联关系多用在当一张表的不同字段查询频次差距过大的情况下,将本可以存储在一张表的字段拆开放置在两张表中,然后将两张表建立一对一的关联关系。
字段:OneToOneField
字段参数
to:设置要关联的表。
to_field:设置要关联的字段。
on_delete: 同ForeignKey字段。
Django基础(四)----ORM、Admin的使用、单表查询中的双下划线、关系字段_第26张图片

你可能感兴趣的:(Django)