ORM查询练习
ORM查询练习
ORM查询的练习题
ORM代码
from django.db import models
# Create your models here.
class Publisher(models.Model):
    name = models.CharField(max_length=32)
    city = models.CharField(max_length=32)
    def __str__(self):
        return self.name
class Book(models.Model):
    title = models.CharField(max_length=32)
    publish_date = models.DateField(auto_now_add=True)
    price = models.DecimalField(max_digits=5, decimal_places=2)
    publisher = models.ForeignKey(to="Publisher")
    def __str__(self):
        return self.title
class Author(models.Model):
    name = models.CharField(max_length=32)
    age = models.IntegerField()
    phone = models.IntegerField()
    books = models.ManyToManyField(to="Book", related_name="authors")
    detail = models.OneToOneField(to="AuthorDetail")
    def __str__(self):
        return self.name
class AuthorDetail(models.Model):
    bobby = models.CharField(max_length=32)
    addr = models.CharField(max_length=128)
查询代码
import os
import sys
if __name__ == '__main__':
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ormday70.settings")
    import django
    django.setup()
    from app01 import models
    # 查找所有书名里包含沙河的书
    ret = models.Book.objects.filter(title__contains="沙河")
    print(ret)
    # 查找所有出版日期是2018年的书
    ret = models.Book.objects.filter(publish_date__year=2018)
    print(ret)
    # 查找价格大于10元的书
    ret = models.Book.objects.filter(price__gt=10)
    print(ret)
    # 找到在沙河的出版社
    ret = models.Publisher.objects.filter(city="沙河")
    print(ret)
    # distinct
    # 查所有书关联的出版社
    ret = models.Book.objects.all().values_list("publisher__name")
    print(ret)
    # distinct去重
    print(ret.distinct())
    # 将所有的书按照价格倒叙排序
    # 默认排序
    ret = models.Book.objects.all().order_by("price")
    print(ret)
    # 倒序
    print(ret.reverse())
    # 同时,支持使用减号表示倒序排序
    ret = models.Book.objects.all().order_by("-price")
    print(ret)
    # 查询书名是沙河异闻录的书的出版社的city
    ret = models.Book.objects.filter(title="沙河异闻录").values_list("publisher__city")
    print(ret)
    # 查询书名是沙河异闻录的书的作者的爱好(夸两张表)
    ret = models.Book.objects.filter(title="沙河异闻录").values("authors__detail__bobby")
    print(ret)

ORM查询练习的更多相关文章
- Django 源码小剖: Django ORM 查询管理器
		ORM 查询管理器 对于 ORM 定义: 对象关系映射, Object Relational Mapping, ORM, 是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换.从 ... 
- Django ORM 查询管理器
		Django ORM 查询管理器 ORM 查询管理器 对于 ORM 定义: 对象关系映射, Object Relational Mapping, ORM, 是一种程序设计技术,用于实现面向对象编程语言 ... 
- ORM查询条件
		模板: from django.db import models class Article(models.Model): title = models.CharField(max_length=20 ... 
- Django之ORM查询复习与cookie
		ORM查询总结: models.Book.objects.filter(**kwargs): querySet [obj1,obj2] models.Book.objects.filter(**kwa ... 
- ORM( ORM查询13种方法3. 单表的双下划线的使用 4. 外键的方法 5. 多对多的方法   ,聚合,分组,F查询,Q查询,事务 )
		必知必会13条 <1> all(): 查询所有结果 <2> get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或 ... 
- Python学习---ORM查询之基于对象的正向/反向/聚合/分组/Q/F查询
		ORM查询之基于对象的正向查询与反向查询 对象形式的查询 # 正向查询 ret1=models.Book.objects.first() print(ret1.title) print(ret1.pr ... 
- Django框架 之 ORM查询操作详解
		Django框架 之 ORM查询操作详解 浏览目录 一般操作 ForeignKey操作 ManyToManyField 聚合查询 分组查询 F查询和Q查询 事务 Django终端打印SQL语句 在Py ... 
- ORM查询(细致):
		ORM查询(细致): 1.正向查找 ret1=model.Book.objects.first() print(ret1.title) print(ret1.price) print(ret1.pub ... 
- ORM 查询练习
		目录 ORM 查询练习 表结构 练习题 测试数据 准备 参考答案 ORM 查询练习 表结构 # 书 class Book(models.Model): title = models.CharField ... 
随机推荐
- Openssl oscp命令
			一.简介 ocsp,在线证书状态命,能够执行很多OCSP的任务,可以被用于打印请求文件和响应文件, 二.语法 openssl ocsp [-out file] [-issuer file] [-cer ... 
- [C++] Virtual Destructor(虚析构函数)
			Without Virtual Destructor(虚析构函数) class A{ public: ; A() { cout <<"A()..."<< e ... 
- 电脑破解wifi密码(至少连过1次的才可以)
			电脑破解wifi密码(至少连过1次的才可以) 连过的wifi密码忘记了怎么办? 只要你电脑连过的都能破解. cmd输入以下内容查看电脑连接过的wifi名字. netsh wlan show profi ... 
- MemoryUsage:监测java虚拟机内存使用
			通过MemoryUsage可以查看Java 虚拟机的内存池的内存使用情况.MemoryUsage类有四个值(均以字节为单位): ===Init=== java虚拟机在启动的时候向操作系统请求的初始内存 ... 
- Oracle VirtualBox 问题汇总
			1.打开虚拟机时报硬盘UUID 已经存在:错误信息: Cannot register the hard disk 'F:\VirtualBox VMs\cl-11r2-rac2\cl-11r2-rac ... 
- 事务(进程 ID 64)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。
			访问频率比较高的app接口,在后台写的异常日志会偶尔出现以下错误. 事务(进程 ID 64)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品.请重新运行该事务 实所有的死锁最深层的原因就是一个 ... 
- 1083 Moving Tables
			题目链接:http://poj.org/problem?id=1083 题意: 走廊两边分别有200个房间,一边连续编号为1-399的奇数,另一边是2-400的偶数, 如果从房间 i 移动桌子到房间 ... 
- uname查看系统名称
			功能说明:uname用来获取电脑和操作系统的相关信息. 语 法:uname [-amnrsvpio][--help][--version] 补充说明:uname可显示linux主机所用的操作系统的版本 ... 
- ioctlsocket()函数是干什么用的?它返回值是什么?共有几个参数?它的各个参数是干什么用的?
			1. ioctlsocket() 简述: 控制套接口的模式. #include <winsock.h> int PASCAL FAR ioctlsocket( SOCKET s, l ... 
- Spring学习(四)——使用Spring JDBC访问数据库
			本篇我们将在上一篇http://www.cnblogs.com/wenjingu/p/3824294.html的Demo程序的基础上增加数据持久层和业务层,实现登录验证功能. 1.修改gradle文件 ... 
