Python学习第130天(Django中ORM一对多的增删改查)

Posted 崆峒山肖大侠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python学习第130天(Django中ORM一对多的增删改查)相关的知识,希望对你有一定的参考价值。

今天回来是早的,但是因为部分原因,差不多9点半才开始看,内容勉强看完,暂时先进行总结一下,实战训练放在明天,同时完成后面的学习。

  主要是针对一对多的增删改查,大致记录了一些关键方法和语句。

  核心语句:publish  =   models.ForeignKey(“Publish”)

  重点关注两点:外键是谁,关联的是哪张表格

你设置的这个名字publish会在表格创建的时候自动得到新名字publish_id

下面是一些具体的增删改查方法

  

一、添加记录
  #publish_id=2
  Book.objects.create(name="linux运维",price=77,pub_date="2017-12-12",publish_id=2)

  #publish=object
  Book.objects.create(name="GO",price=23,pub_date="2017-05-12",publish=publish_obj)

二、查询记录(通过对象)

  正向查询:
    book_obj=Book.objects.get(name="python")
    pub_obj=book_obj.publish----》书籍对象对应的出版社对象
    pub_obj.name
  反向查询:
    pub_obj = Publish.objects.filter(name="人民出版社")[0]
    pub_obj.book_set.all().values("name","price")

  查询记录(filter values 双下划线__)

    人民出版社出版过的书籍与价格
    ret=Book.objects.filter(publish__name="人民出版社").values("name","price")

  python这本书出版社的名字
    ret2=Publish.objects.filter(book__name="python").values("name")

  python这本书出版社的名字
    ret3=Book.objects.filter(name="python").values("publish__name")

  北京的出版社出版书的名字
    ret4=Book.objects.filter(publish__city="北京").values("name")

  2017年上半年出版过书的出版社的名字
    ret5=Book.objects.filter(pub_date__lt="2017-07-01",pub_date__gt="2017-01-01").values("publish__name")

 

暂时就这些,明天抓紧点时间。

以上是关于Python学习第130天(Django中ORM一对多的增删改查)的主要内容,如果未能解决你的问题,请参考以下文章

Python学习第135天(Django的ORM多对多查询)

Python学习第105天(Django初步实现)

python学习点滴记录-Day18-django-orm

Python学习第136天(Django的admin)

Python学习第120天(Django1和2之间的区别)

Django学习第6篇:Django之ORM单表操作(增删改查)