Django框架03:模型

  • 内容
  • 相关

Django模型流程总结(Model)


一、数据库配置

在settings.py中保存了数据库的连接配置信息,Django默认初始配置使用sqlite3数据库。
DATABASES = {

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        }
    }
1.使用MySQL数据库首先需要安装驱动程序
pip install PyMySQL
2.在Django的工程同名子目录的init.py文件中添加如下语句  
import pymysql
    
pymysql.install_as_MySQLdb()
   作用是让Django的ORM能以mysqldb的方式来调用PyMySQL。

3.修改DATABASES配置信息
DATABASES = {

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'HOST': '127.0.0.1',  # 数据库主机
            'PORT': 3306,  # 数据库端口
            'USER': 'root',  # 数据库用户名
            'PASSWORD': 'mysql',  # 数据库用户密码
            'NAME': 'book'  # 数据库名字
        }
    }
4.在MySQL中创建数据库
 create database book charset=utf8;


二、定义模型类

1. 定义
       参考django文档
   
2. 迁移
       1)生成迁移文件     
python manage.py makemigrations  
       2)同步到数据库中
       python manage.py migrate
   
3. 添加测试数据
   

三、数据库操作(增-删-改-查)

1.增加

   方式一:   1.实例名 = 模型类( 字段=值,字段=值,...)   

                 2.实例名.save()
      book = BookInfo(
          name='xcooo',
          pub_date='2000-01-01'
      )
      
      book.save()
   方式二: 实例名 = 模型类.objects.create(字段=值,字段=值)   自动保存
      BookInfo.objects.create(
          name='java',
          pub_date='2019-08-14'
      ) 


2.修改


  方式一: 1.实例名 = 模型类.objects.get(id=1)  先查询

              2.实例名.字段 = 值  

              3.实例名.save()
  book = BookInfo.objects.get(id=1)
  book.readcount = 20
  book.save()
  方式二: 模型类.objects.filter(pk=1).update(字段=值,字段=值)
     BookInfo.objects.filter(id=1).update(
          readcount=100,
          commentcount=200
      )


3.删除


  方式一: 1. 实例名 = 模型类.objects.get(id=1)  先查询

              2.实例名.delete()
     # 1. 先查询数据
      book = BookInfo.objects.get(id=1)
      # 2. 调用删除的方法
      book.delete()
 方式二: 模型类.objects.filter(pk=1).delete() 
BookInfo.objects.filter(id=1).delete() 


4.查询


1.基础查询
  # get 得到某一个数据
  # all 获取所有
  # count 个数
2.筛选查询
select  from bookinfo where 条件语句
相当于where查询
filter    : 筛选/过滤 返回 n个结果(n = 0/1/n)
get       :          返回1个结果
exclude   : 排除符合条件剩下的结果  相当于not
    
语法形式:
            以filter(字段名__运算符=值) 为例
3.F和Q
F对象的语法形式
       filter(字段名__运算符=F('字段名'))
        
Q对象的语法形式
        Q(字段名__运算符=值)
    
        或 Q()|Q()....
        并且 Q()&Q()....
        not  ~Q()
4.聚合函数(了解)
Sum Max, Min, Avg, Count
    
聚合函数是: aggregate
语法形式是: aggregate(Xxx('字段'))
5.排序
   # 默认升序
    BookInfo.objects.all().order_by('readcount')
    
    # 降序
    BookInfo.objects.all().order_by('-readcount')
6.关联查询
 语法形式:
            1.通过书籍查询人物信息(已知主表数据, 关联查询从表数据)
              主表模型(实例对象).关联模型类名小写_set.all()
    
            2.通过人物查询书籍信息(已知从表数据, 关联查询主表数据)
              从表模型(实例对象).外键
6-1.关联查询筛选
语法形式:
            我们需要的是 书籍信息,已知条件是 人物信息
            我们需要的是 主表数据,已知条件是 从表数据
    
            filter(关联模型类名小写__字段__运算符=值)
            
            
            我们主要的是 人物信息,已知条件是 书籍信息
            我们需要的是 从表数据,已知条件是 主表数据
            
            filter(外键__字段__运算符=值)
7.限制查询集
 >>> books = BookInfo.objects.all()[0:2]
    >>> books
    <QuerySet [<BookInfo: 射雕英雄传>, <BookInfo: 天龙八部>]>
8.分页-limit
   #导入分页类
    from django.core.paginator import Paginator
    #查询数据
    books = BookInfo.objects.all()
    #创建分页实例
    paginator=Paginator(books,2)   参数1: 结果集/列表   参数2: 每页多少条记录
    #获取第几页数据
    page_skus = paginator.page(1)
    #获取总页数
    total_page=paginator.num_pages
您阅读这篇文章共花了:  

本文标签:

版权声明:转载请带上版权原创为《星城

解压密码:若设有密码均为:www.xcooo.cn

收录状态:百度已收录点击查看详情

Django框架03:模型

发表评论

您可以选择匿名评论,保护个人隐私 !