首页 > 其他 > 详细

Django学习笔记一十三——ORM查询练习

时间:2020-04-24 21:19:47      阅读:56      评论:0      收藏:0      [点我收藏+]

前面基本上已经讲了ORM常用的使用方法,这里结合实例做一些查询联系

数据结构

 这里我们把前面用到的各种关系都加上,做一个下面样的数据库

 

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)
    memo = models.TextField(null=True)
    # 创建外键,关联publish
    publisher = models.ForeignKey(to="Publisher",on_delete=models.CASCADE)
    # 创建多对多关联author
    author = models.ManyToManyField(to="Author")

    def __str__(self):
        return self.title

# 出版社
class Publisher(models.Model):
    name = models.CharField(max_length=32)
    city = models.CharField(max_length=32)

    def __str__(self):
        return self.name

# 作者
class Author(models.Model):
    name = models.CharField(max_length=32)
    age = models.IntegerField()
    phone = models.CharField(max_length=11)
    detail = models.OneToOneField(to="AuthorDetail",on_delete=models.CASCADE)

    def __str__(self):
        return self.name

# 作者详情
class AuthorDetail(models.Model):
    addr = models.CharField(max_length=64)
    email = models.EmailField()

 

查询数据

 1.查找所有书名里包含Python的书

book = models.Book.objects.filter(title__contains=Python

2.查找所有2019年出版的书

book = models.Book.objects.filter(title__contains=Python)

3.查找价格大于10元的书

book = models.Book.objects.filter(price__gt=10)

4.查找在北京的出版社

publishers = models.Publisher.objects.filter(city=北京)

5.所有数据按照价格倒序排列

ret = models.Book.objects.all().order_by(-price)

6.查找“学习Python"书籍是在哪个城市出版的(跨表查询)

city = models.Book.objects.filter(title=学习Python).values(publisher__city)

7.查找”学习Python"书籍作者的地址(跨多表)

addr = models.Book.objects.filter(title = 学习Python).values(author__detail__addr)#跨了两张表

 

Django学习笔记一十三——ORM查询练习

原文:https://www.cnblogs.com/yinsedeyinse/p/12728726.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!