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

  

猜你喜欢

转载自www.cnblogs.com/bainianminguo/p/9351936.html