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)

最新文章

  1. 图结构练习——最小生成树(prim算法(普里姆))
  2. js定时器调用参数的方法
  3. HTTP Status 500 - An exception occurred processing JSP page /WEB-INF
  4. 【Qt】Qt之自定义界面(实现无边框、可移动)【转】
  5. self指向函数地址 动态调用函数的简单例子
  6. InfoPath本地发布及部署
  7. Java基础之参数传递
  8. Hadoop MapReduce开发最佳实践(上篇)
  9. 【转】5 Best Place to Learn Linux – Linux Tutorial Sites
  10. python 全栈开发,Day2
  11. Docker学习笔记【一】
  12. LeetCode算法题-Detect Capital(Java实现)
  13. audio google play()
  14. 渐变UI
  15. 【学习总结】之 3Blue1Brown系列
  16. 使用Calender类获取系统时间和时间和运算
  17. IDisposable
  18. MacBookPro-OSX
  19. php-isset和empty
  20. 【自定义IK词典】Elasticsearch之中文分词器插件es-ik的自定义词库

热门文章

  1. 重定向和请求转发后面加“return;”语句
  2. matrix derivatives
  3. linux 安装php7
  4. Unknown column 'sid' in 'field list'
  5. T Fiddler 教程 _转
  6. spark安装配置(scala不是必须的,基于java虚拟机,因此scala可以不配,但是开发需要可以配)
  7. BZOJ 2460 [BeiJing2011]元素(线性基模板题)
  8. 第二章第一个项目——关于mime
  9. mongoexport遭遇Authentication failed
  10. Verilog HDL VGA Driver for Xilinx Nexys 4 适用于Nexys4的VGA驱动