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)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步