• 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)
    


  • 相关阅读:
    Windows Server 2003 DHCP迁移到2008R2的方法
    在Linux上安装Zabbix agent的方法
    在Windows上安装Zabbix agent的方法
    利用pscp程序实现Windows和Linux互传文件
    CentOS 7 LNMP环境搭建 Zabbix3.4
    2019-2020-2 20175105王鑫浩《网络对抗技术》Exp9 Web安全基础
    2019-2020-2 20175105王鑫浩《网络对抗技术》Exp8 Web基础
    2019-2020-2 20175105王鑫浩《网络对抗技术》Exp7 网络欺诈防范
    2019-2020-2 20175105王鑫浩《网络对抗技术》Exp6 MSF基础应用
    2019-2020-2 20175105王鑫浩《网络对抗技术》Exp5 信息搜集与漏洞扫描
  • 原文地址:https://www.cnblogs.com/banshaohuan/p/9455711.html
Copyright © 2020-2023  润新知