Django中的update_or_create()函数可以用于更新或创建数据库中的记录。如果数据库中存在符合更新条件的记录,则更新该记录的值;反之,如果没有符合条件的记录,则新建一个记录。下面详细介绍update_or_create()函数的用法:
update_or_create()函数的格式如下:
update_or_create(defaults=None, **kwargs)
name='Jack'
、age=23
等等。例如,下面是一个用户模型类:
class User(models.Model):
name = models.CharField(max_length=30)
age = models.IntegerField()
假设数据表中已经有一个名字为'Jack'的用户,现在要更新这个用户的年龄为33,可以使用下面的代码:
user, created = User.objects.update_or_create(name='Jack', defaults={'age': 33})
其中,user
是更新或者创建的用户对象,created
是一个布尔值,指示该对象是否是新创建的。如果用户存在,那么user
是已有的用户对象;如果用户不存在,那么user
是新创建的用户对象。这个代码与下面的代码是等价的:
user = User.objects.filter(name='Jack').first()
if user is None:
user = User(name='Jack', age=33)
else:
user.age = 33
user.save()
再举一个例子:有一个书籍模型类Book,其字段如下:
class Book(models.Model):
name = models.CharField(max_length=100)
author = models.CharField(max_length=20)
pub_date = models.DateField()
假设需要更新一本书的信息,如果这本书存在,则只需更新它的作者和出版日期;如果它不存在,则新建一本书,请使用下面的代码:
book, created = Book.objects.update_or_create(
name='Python编程从入门到实践',
defaults={'author': 'Eric Matthes', 'pub_date': datetime.date(year=2016, month=6, day=30)}
)
本文链接:http://task.lmcjl.com/news/16236.html