Django的models操作

一、先看单表操作

方式1:

    models.book.objects.create(
        Book_name = "aaa",
        Book_info = "bbb",
        Book_price = "ccc",
        Book_num = "ddd"
    )

 

方式2:用2个*号传递一个字典进去 

    book_info = {
        "Book_name":"aaa",
        "Book_info":"bbb",
        "Book_price":"ccc",
        "Book_num":"ddd"
    }

    models.book.objects.create(**book_info)

  

删,通过delete方法

可以通过表中的每个字段进行删除

models.book.objects.filter(id=1).delete()

models.book.objects.filter(Book_name="book1").delete()

  

改,通过update方法,要 调用update方法,必须要querySet对象才可以,比如filter和all方法的对象集合,通过get方法返回的单个对象是不能调用update方法的

    models.book.objects.filter(id=1).update(
        Book_name = "aaa",
        Book_info = "bbb",
        Book_price = "ccc",
        Book_num = "dd"
    )

  

models.book.objects.filter(Book_name="book6").update(Book_name="aaaaaaaaaaaaaaaa")

  

get方法:返回单个对象

models.book.objects.all().get(id=2)

  

filter方法:返回一个对象集合

models.book.objects.filter(id=1)

  

values方法:返回一个对象集合的字典形式,也可以只返回指定的字段

 models.book.objects.filter(id=1).values("Book_name","Book_info")

  

print(models.book.objects.all().values())

  

values_list方法:返回一个对象集合的列表的形式

print(models.book.objects.all().values_list())

  

count方法:通过数据

print(models.book.objects.filter(Book_name="book3").count())

  

exists方法:统计对象集合中是否有数据,有则为ture,无则为false

print(models.book.objects.filter(Book_name="book3").count())

 

exclude:返回不符合某个条件的对象集合

models.book.objects.exclude(id=2)

  

order_by:按照指定的字段从小到大排列

models.book.objects.order_by("Book_price")

  

order_by:按照指定的字段从大到小排列

models.book.objects.order_by("-Book_price")

  

reverse:和orader_by加一个符号的效果一样,逆序排列

models.book.objects.reverse("id")

  

distanct:对结果去重,这里不能对单个字段去重,只能对所有的字段去重

models.book.objects.all().distinct()

  

二、在看一对多操作

一对多和一对一基本上一样,只有插入数据这里有点不一样

    # 先看一对多
    # 我们先看下ForeignKey这个字段的值该如何插入
    # 虽然我们写的的Book_pub,但是实际上在数据库中存储的字段是Book_pub_id,所以这里有两种方式来搞


    # 如果我们知道书对应的出版社的id,则可以直接用Book_pub_id赋值这个数字就可以了
    # Book_pub_id = 4
    #

    # 我们还可以直接从数据库取出出版社的对象,然后Book_pub赋值给一个出版社的对象就可以了
    # Book_pub = Publish的对象

  

另外一点不一样的就是,如果在一所对应的表中删除数据,那么会同步删除多表中的包含该一的字段

比如书1的出版社是出版社1,书的出版社是出版社1,那么如果我们在出版社表中删除出版社1,那么不仅仅出版社表中的出版社1的数据会被删除,书表中的书1和书2都会被同步删除

三、再看多对多操作

猜你喜欢

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