zoukankan      html  css  js  c++  java
  • django的model操作整理

    单表操作

    增加数据

        auther_obj = {"auther_name":"崔皓然","auther_age":1}
        models.auther.objects.create(
            **auther_obj
        )
    

      

        models.auther.objects.create(
            auther_name="周雍博",
            auther_age=4
        )
    

      

        obj = models.auther(
            auther_name="崔洪艳",
            auther_age=29
        )
        obj.save()
    

      

        obj = models.auther(
            auther_name = "王仙枝",
            auther_age = "50"
        )
        obj.save()
    

      

    删除数据

    models.auther.objects.filter(auther_name="崔洪艳")[0].delete()
    

      

    一对多操作

    增加数据

        a_obj = models.auther.objects.get(id=1)
    
    
        models.book.objects.create(
            book_name = "python课程1",
            book_price = 12,
            book_auther = a_obj
        )
    

      

        a_obj = models.auther.objects.get(id=5)
    
        models.book.objects.create(
            book_name = "java课程1",
            book_price = 13,
            book_auther_id = a_obj.id
        )
    

      

        a_obj = models.auther.objects.get(id=2)
    
        book_dict = {
            "book_name":"python课程2",
            "book_price":14,
            "book_auther_id":a_obj.id
        }
    
        obj = models.book.objects.create(
            **book_dict
        )
    

      

        a_obj = models.auther.objects.get(id=4)
    
        book_dict = {
            "book_name":"java课程2",
            "book_price":15,
            "book_auther":a_obj
        }
    
        models.book.objects.create(
            **book_dict
        )
    

      

    一对多正向查询

        # 查询id为2的书的所有作者的信息
        obj = models.book.objects.get(id=2)
    
        print(obj.book_auther.auther_name)
        print(obj.book_auther.auther_age)
    
        obj = models.book.objects.filter(id=2).values("book_name","book_price","book_auther__id","book_auther__auther_name","book_auther__auther_age")
    
        print(obj)
    

      

        # 查询id为2的作者的出版的书
    
        obj = models.book.objects.filter(book_auther_id=2).values("book_name","book_price","book_auther__id","book_auther__auther_name","book_auther__auther_age")
        print(obj)
    
    
        obj = models.book.objects.get(book_auther_id=2)
        print(obj.book_auther.auther_age)
        print(obj.book_auther.auther_name)
        print(obj.book_name)
    

      

    一对多反向查询

        # 查看出版社出版的书
    
        obj = models.auther.objects.filter(id=2).values("auther_name","auther_age","book__book_name")
        print(obj)
    
        obj = models.auther.objects.get(id=2).book_set.values("book_name","book_price","book_auther__id","book_auther__auther_name","book_auther__auther_age")
        print(obj)
    

      

    多对多操作

    增加数据

        b1 = models.book.objects.get(id=1)
        b2 = models.book.objects.get(id=2)
        b4 = models.book.objects.get(id=4)
        b5 = models.book.objects.get(id=5)
        models.publish.objects.get(id=1).publish_book.add(
            b1,b2
        )
    

      

        book_list = [b1,b2]
    
        models.publish.objects.get(id=2).publish_book.add(
            *book_list
        )
    

      

    更新数据

        book_list = [b1,b2,b4,b5]
        models.publish.objects.get(id=1).publish_book.set(book_list)
    

      

    移除数据

        models.publish.objects.get(id=1).publish_book.remove(b1)
    
        book_list = [b2, ]
    
        models.publish.objects.get(id=1).publish_book.remove(*book_list)  

     

    正向查询

        obj = models.publish.objects.get(id=1).publish_book.values("book_name","publish__publish_name")
        print(obj)
    
    
        obj = models.publish.objects.filter(id=1).values("publish_name","publish_book__book_name")
        print(obj)
    

      

    反向添加数据

        p1 = models.publish.objects.get(id=1)
        p2 = models.publish.objects.get(id=2)
        p3 = models.publish.objects.get(id=3)
        b1.publish_set.add(p1,p2,p3)
    

      

    反向删除数据

    b1.publish_set.remove(p1)
    

      

    反向更新数据,把remove替换为set就可以了

    反向查询

        obj = models.book.objects.get(id=1).publish_set.values("publish_name","publish_book__book_name")
    

      

    model中多表关系和参数

     多对多

     

     一对一

    model操作

     

     

     

     

  • 相关阅读:
    北京清北 综合强化班 Day1
    Noip2015 提高组 Day1
    Noip2016 提高组 Day2 T1 组合数问题
    2017.9.23 NOIP2017 金秋杯系列模拟赛 day1 T1
    [51NOD1103] N的倍数(鸽笼原理)
    [51NOD1420] 数袋鼠好有趣(贪心)
    [CF808A] Lucky Year(规律)
    [CF808B] Average Sleep Time([强行]树状数组,数学)
    [CF808C] Tea Party(贪心)
    [CF808D] Array Division(暴力,枚举)
  • 原文地址:https://www.cnblogs.com/bainianminguo/p/9351936.html
Copyright © 2011-2022 走看看