zoukankan      html  css  js  c++  java
  • 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)
    


  • 相关阅读:
    通过jarjar.jar来替换jar包名的详细介绍
    Android开发中adb启动失败adb连接异常的解决办法
    App你真的需要么
    MVC5 网站开发之九 网站设置
    MVC5 网站开发之八 栏目功能 添加、修改和删除
    MVC5 网站开发之七 用户功能 3用户资料的修改和删除
    Ninesky源代码从Codeplex迁移到开源中国
    MVC5 网站开发之七 用户功能 2 用户添加和浏览
    赶个项目,博客稍后更新
    MVC5 网站开发之七 用户功能 1、角色的后台管理
  • 原文地址:https://www.cnblogs.com/banshaohuan/p/9455711.html
Copyright © 2011-2022 走看看