关键词

详解Django的 get_or_create() 函数:获取或创建一个对象

Django中get_or_create()函数的作用与使用方法

作用

get_or_create() 函数是 Django ORM 中常用的查询函数之一,用于查询数据库中数据是否存在,如果不存在则创建新的一条数据,如果存在则返回已经存在的一条数据。

使用方法

get_or_create() 函数的参数包含两部分:

  • 查询条件,即获取的数据的过滤条件。
  • 创建的数据,即如果数据不存在,需要创建的新数据,是一个字典(dict)类型的数据。

示例:

# 查询book表中name为'Python Web开发'的书籍,如果不存在则创建一条新的数据
book, created = Book.objects.get_or_create(name='Python Web开发', price=78.5)

以上代码的含义为:查询 book 表中 name 为 'Python Web开发' 的书籍,如果存在则返回已经存在的这条数据;如果不存在,则创建一条新的数据,将新数据的 name 字段设为 'Python Web开发',price 字段设为 78.5,并将新数据保存到数据库中。返回的结果中,book 表示获取到的数据,created 表示是否创建了新的数据,如果是 True 则表示创建了新的数据,否则表示获取到的是已存在的数据。

示例

假设有一个保存用户信息的Model,名为UserInfo。

class UserInfo(models.Model):
    name = models.CharField(max_length=50)
    age = models.IntegerField()
  1. 查询数据库中是否存在符合条件的数据
user, created = UserInfo.objects.get_or_create(name='Jack', age=20)

以上代码的含义为:查询 UserInfo 表中 name 为 'Jack',age 为 20 的数据是否存在,如果存在则返回已存在的数据,如果不存在则创建一条新数据,将数据的 name 字段设为 'Jack',age 字段设为 20,并保存到数据库中。参考返回的结果为:

user = <UserInfo: UserInfo object>
created = True  # 表示创建了一条新的数据
  1. 创建新的数据
user, created = UserInfo.objects.get_or_create(name='Tom', age=25)

以上代码的含义为:查询 UserInfo 表中 name 为 'Tom',age 为 20 的数据是否存在,如果存在则返回已存在的数据;如果不存在则创建一条新数据,将数据的 name 字段设为 'Tom',age 字段设为 25,并保存到数据库中。参考返回的结果为:

user = <UserInfo: UserInfo object>
created = True  # 表示创建了一条新的数据

以上是 Django 中 get_or_create() 函数的使用方法和示例。

本文链接:http://task.lmcjl.com/news/4180.html

展开阅读全文