ORM查询练习

Django 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查询练习的更多相关文章

  1. Django 源码小剖: Django ORM 查询管理器

    ORM 查询管理器 对于 ORM 定义: 对象关系映射, Object Relational Mapping, ORM, 是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换.从 ...

  2. Django ORM 查询管理器

    Django ORM 查询管理器 ORM 查询管理器 对于 ORM 定义: 对象关系映射, Object Relational Mapping, ORM, 是一种程序设计技术,用于实现面向对象编程语言 ...

  3. ORM查询条件

    模板: from django.db import models class Article(models.Model): title = models.CharField(max_length=20 ...

  4. Django之ORM查询复习与cookie

    ORM查询总结: models.Book.objects.filter(**kwargs): querySet [obj1,obj2] models.Book.objects.filter(**kwa ...

  5. ORM( ORM查询13种方法3. 单表的双下划线的使用 4. 外键的方法 5. 多对多的方法 ,聚合,分组,F查询,Q查询,事务 )

    必知必会13条 <1> all(): 查询所有结果 <2> get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或 ...

  6. Python学习---ORM查询之基于对象的正向/反向/聚合/分组/Q/F查询

    ORM查询之基于对象的正向查询与反向查询 对象形式的查询 # 正向查询 ret1=models.Book.objects.first() print(ret1.title) print(ret1.pr ...

  7. Django框架 之 ORM查询操作详解

    Django框架 之 ORM查询操作详解 浏览目录 一般操作 ForeignKey操作 ManyToManyField 聚合查询 分组查询 F查询和Q查询 事务 Django终端打印SQL语句 在Py ...

  8. ORM查询(细致):

    ORM查询(细致): 1.正向查找 ret1=model.Book.objects.first() print(ret1.title) print(ret1.price) print(ret1.pub ...

  9. ORM 查询练习

    目录 ORM 查询练习 表结构 练习题 测试数据 准备 参考答案 ORM 查询练习 表结构 # 书 class Book(models.Model): title = models.CharField ...

随机推荐

  1. realsense pcl git

    https://github.com/Ext4FAT/Registration vc++ pcl realsense  矿泉水瓶子 https://github.com/dBeker/PCL-Real ...

  2. CentOS 7 更换 阿里云/清华大学 yum 软件源

    阿里云参考:https://opsx.alibaba.com/mirror?lang=zh-CN 清华参考:https://mirrors.tuna.tsinghua.edu.cn/help/cent ...

  3. Spring Boot☞ 使用velocity渲染web视图

    效果图: 代码 <!DOCTYPE html><html><head lang="en"> <meta charset="UTF ...

  4. myisam innodb memory 区别(2)

    1.区别:1) MyISAM管理非事务表.提供高速存储和检索,以及全文搜索能力.MyISAM在所有MySQL配置里被支持,是默认的存储引擎,除非配置MySQL默认使用另外一个引擎.2)MEMORY存储 ...

  5. UVa 11090 Going in Cycle!! (Bellman_Ford)

    题意:给定一个加权有向图,求平均权值最小的回路. 析:先十分答案,假设答案是 ans,那么有这么一个回路,w1+w2+w3+...+wk < k*ans,这样就是答案太大,然后移项可得,(w1- ...

  6. 公众号js-sdk简

    后台代码 jssdk.PHP——因sae的不可写环境,故需要将accesstoken和JsApiTicket存入数据库. 数据库字段:id(int 3),accesstoken(string 255) ...

  7. 使用jQuery 取文本

    <html> <head> <meta charset="UTF-8"> <title>b</title> <sc ...

  8. Hadoop(HDFS、YARN、HBase、Hive和Spark等)默认端口表

    端口 作用 9000 fs.defaultFS,如:hdfs://172.25.40.171:9000 9001 dfs.namenode.rpc-address,DataNode会连接这个端口 50 ...

  9. 盒子模型 以及CSS的box-sizing属性。

    盒子模型有两种 一种是 内容盒子模型 一种是边框盒子模型. 内容盒子模型(标准盒子模型)由width和height中指定的元素的尺寸不包括内边距和边框 仅是指的内容的实际尺寸: 网上搜索了两张配图不错 ...

  10. [Lua快速了解一下]Lua的model

    我们可以直接使用require(“model_name”)来载入别的lua文件,文件的后缀是.lua.载入的时候就直接执行那个文件了.比如: 我们有一个hello.lua的文件: print(&quo ...