086~088:QuerySet API详解

Stella981
• 阅读 517

QuerySet API详解-get、create、get_or_create和bulk_create方法:

create :创建一条数据,并且保存到数据库中。这个方法相当于先用指定的模型创建一个对象,然后再调用这个对象的 save 方法。示例代码如下:

article = Article(title='abc')
article.save()
# 下面这行代码相当于以上两行代码
article = Article.objects.create(title='abc')

get_or_create :根据某个条件进行查找,如果找到了那么就返回这条数据,如果没有查找到,那么就创建一个。示例代码如下:

obj,created= Category.objects.get_or_create(title='默认分类')

如果有标题等于 默认分类 的分类,那么就会查找出来,如果没有,则会创建并且存储到数据库中。
这个方法的返回值是一个元组,元组的第一个参数 obj 是这个对象,第二个参数 created 代表是否创建的。

数据库模型中也可以怎么搞:

def publisher_default():
    return Publisher.objects.get_or_create(name="默认出版社")

class Book(models.Model):
    name = models.CharField(max_length=300)
    pages = models.IntegerField()
    price = models.FloatField()
    rating = models.FloatField()
    author = models.ForeignKey(Author,on_delete=models.CASCADE)
    publisher = models.ForeignKey(Publisher, on_delete=models.CASCADE)
    # publisher = models.ForeignKey(Publisher, on_delete=models.SET_DEFAULT, default=publisher_default)

bulk_create :一次性创建多个数据。示例代码如下:

Tag.objects.bulk_create([Tag(name='111'), Tag(name='222')])

实例代码和截图:

# book = Book.objects.get(pk=1)
    # print(book)

    # publisher = Publisher.objects.create(name="工业出版社")
    # print(publisher)

    # publisher = Publisher.objects.get_or_create(name="电子出版社")
    # print(publisher)

    publisher = Publisher.objects.bulk_create([Publisher(name="123"), Publisher(name="xyz")    ])

086~088:QuerySet API详解

点赞
收藏
评论区
推荐文章
Stella981 Stella981
3年前
SQLAlchemy对数据库的增删改查操作
创建指定的数据库表:fromsqlalchemy.ext.declarativeimportdeclarative_basefromsqlalchemyimportColumn,Integer,String,create_engine创建一个orm模型基类Basedeclarative_ba
Wesley13 Wesley13
3年前
MySQL 基本操作
1、创建数据库:CREATE DATABSE  数据库名;2、切换数据库:USE DATABASE 数据库名;3、创建数据表:CREATE TABLE 表名(属性名 属性类型,...);4、插入数据:INSERT INTO 表名 VALUES(数据值,...);5、从文件中导入数据:
Stella981 Stella981
3年前
Python unittest模块的使用笔记:对mock.patch()的被mock函数的说明
       现在假设需要对get\_app模块内的create\_app函数做单元测试,同时create\_app函数调用了另一模块utils的load\_yaml函数。由于模块utils的load\_yaml函数可能处于开发阶段或是需要通过网络传输数据,从而导致测试的不便。这时就需要对load\_yaml做一个mock.patch,即伪造一个load\_
Stella981 Stella981
3年前
HttpClient使用总结
<divclass"htmledit\_views"<h1<aname"t0"</a一、使用方法</h1<p使用HttpClient发送请求、接收响应很简单,一般需要如下几步即可。<br1.创建HttpClient对象。<br2.创建请求方法的实例,并指定请求URL。如果需要发送GET请求,创建HttpGet对象;如果需
Easter79 Easter79
3年前
SQLAlchemy对数据库的增删改查操作
创建指定的数据库表:fromsqlalchemy.ext.declarativeimportdeclarative_basefromsqlalchemyimportColumn,Integer,String,create_engine创建一个orm模型基类Basedeclarative_ba
可莉 可莉
3年前
086~088:QuerySet API详解
QuerySetAPI详解get、create、get\_or\_create和bulk\_create方法:create:创建一条数据,并且保存到数据库中。这个方法相当于先用指定的模型创建一个对象,然后再调用这个对象的save方法。示例代码如下:articleArticle(title'abc')
Wesley13 Wesley13
3年前
MySQL表的几个简单查询语句
1. 创建数据库CREATE DATABASE databasename2. 删除数据库drop database dbname3\.创建新表create table tabname(col1 type1 \not null\ \primary key\,col2 type2 \not   null\,..)    
Stella981 Stella981
3年前
Neo4j Cypher语法整理
查询John的朋友的朋友添加5个人名节点,名字分别为CREATE(:People{name:"John"})CREATE(:People{name:"Joe"})CREATE(:People{name:"Sara"})CREATE(:People{name:"Steve"})CRE
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
3年前
Mybatis别名的配置使用
之前,我们在sql映射xml文件中的引用实体类时,需要写上实体类的全类名(包名类名),如下<! 创建用户(Create)   <insert id"addUser" parameterType"me.gacl.domain.User"    insert into users(name,