三篇文章带你了解基础、进阶、高端篇Django ORM操作(进阶)

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理

本文章来自腾讯云 作者:Python进阶者

想要学习Python?有问题得不到第一时间解决?来看看这里“1039649593”满足你的需求,资料都已经上传至文件中,可以自行下载!还有海量最新2020python学习资料。
点击查看

在这里插入图片描述

在这里插入图片描述
代码

book = models.Book.objects.filter(title="<<大明帝国>>").first()
print(f"book类型:{type(book)}")
print(f"id:{book.id}")
print(f"书名:{book.title}")
print(f"价格:{book.price}")
print(f"书名:{book.PublishDate}")
print(f"出版社:{book.publish}") # 外键字段

执行结果
在这里插入图片描述
在这里插入图片描述
代码

print(f"出版社类型:{type(book.publish)}")  # <class 'web.models.Publish'>
# book.publish已经是models.Publish对象,所以可以自由调里面的属性
print(f"出版社电话:{book.publish.phone},")

在这里插入图片描述
代码

# 查询邮电出版社
publish_obj = models.Publish.objects.filter(title="邮电出版社").first()
# 获取出版社id
publish_id = publish_obj.id
# 查询publish_id为出版社id的
book_list = models.Book.objects.filter(publish_id=publish_id)
print(book_list)

执行结果
在这里插入图片描述
其实,还有一种方法:通过一个对象,反向查多个对象。

代码

publish_obj = models.Publish.objects.filter(title="邮电出版社").first()
book_list = publish_obj.book_set.all()
print(book_list)

执行结果
在这里插入图片描述
代码

book_list = models.Book.objects.filter(publish__title="邮电出版社")
print(book_list)

在这里插入图片描述

ret = models.BookManyAuthor.objects.filter(book__publish__title="邮电出版社")
print(ret)

跨了book表又跨了publish表
在这里插入图片描述
执行结果
在这里插入图片描述
在这里插入图片描述
执行结果
在这里插入图片描述
在这里插入图片描述
代码

# 查询邮电出版社
publish = models.Publish.objects.filter(title="邮电出版社").first()
print(publish)
# 反向一对多
book_list = publish.book_set.all()
print(book_list)

执行结果
在这里插入图片描述
别名方式
models.py
在这里插入图片描述

代码

# 查询邮电出版社
publish = models.Publish.objects.filter(title="邮电出版社").first()
print(publish)
# 反向一对多
book_list = publish.book_list.all()
print(book_list)

执行结果
在这里插入图片描述
在这里插入图片描述
代码

# 举例而已,后面filter里面可以是其他 或 的条件
book1 = models.Book.objects.filter(title="<<大明帝国>>").filter(price="99")
# 效果同上
book2 = models.Book.objects.filter(title="<<大明帝国>>",price="99")
print(book1)
print(book2)

执行结果
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值