update_or_create(defaults=None, **kwargs)
kwargs: 来更新对象或创建一个新的对象。
defaults: 是由 (field, value) 对组成的字典,用于更新对象。
返回一个由 (object, created)组成的元组,
object: 是一个创建的或者是被更新的对象,
created: 是一个标示是否创建了新的对象的布尔值。
update_or_create: 方法通过给出的kwarg
try: obj = Person.objects.get(first_name='John', last_name='Lennon') for key, value in updated_values.iteritems(): setattr(obj, key, value) obj.save() except Person.DoesNotExist: updated_values.update({'first_name': 'John', 'last_name': 'Lennon'}) obj = Person(**updated_values) obj.save() # 如果模型的字段数量较大的话,这种模式就变的非常不易用。上面的示例可以用 update_or_create() 重写: obj, created = Person.objects.update_or_create( first_name='John', last_name='Lennon', defaults=updated_values)