Django中的get_or_create()
函数的作用是尝试从数据库中获取一个对象,如果不存在则创建一个新的对象。该函数有以下两个参数:
defaults
: 可选参数,用于在创建新对象时指定字段的默认值,应该是一个字典类型。- 其他参数:可以是任何由
Model.objects.filter()
函数接受的参数,用于获取已存在的对象。
使用方法如下:
obj, created = MyModel.objects.get_or_create(field1=value1, field2=value2, ...)
obj
表示获取到的现有对象或者新创建的对象。created
表示标志位,表示对象是新创建的还是现有的对象。如果是新创建的对象,则created
的值为True
,否则为False
。
下面是一些使用get_or_create()
函数的例子:
- 创建一条记录:
from myapp.models import Kitty
kitty, created = Kitty.objects.get_or_create(name="小貓")
如果数据库中没有名称为“小貓”的Kitty
对象,则get_or_create()
函数会为其创建一个新的对象。
- 获取一个现有的记录:
from myapp.models import Kitty
kitty, created = Kitty.objects.get_or_create(name="小花")
如果数据库中存在名称为“小花”的Kitty
对象,则get_or_create()
函数会将其返回,且created
的值为False
。
- 使用
defaults
选项创建记录:
from myapp.models import Kitty
kitty, created = Kitty.objects.get_or_create(name="小老鼠", defaults={"color": "灰色"})
如果数据库中没有名称为“小老鼠”的Kitty
对象,则get_or_create()
函数会创建一个新的对象,并将color
字段的默认值设置为“灰色”。
- 传递多个筛选条件:
from myapp.models import Kitty
kitty, created = Kitty.objects.get_or_create(name="小老鼠", color="白色")
如果数据库中不存在名称为“小老鼠”且颜色为“白色”的Kitty
对象,则get_or_create()
函数会创建一个新的对象。如果存在,则会返回该对象,且created
的值为False
。
综上所述,get_or_create()
函数是一个非常方便的函数,可以大大简化我们对数据库的操作。