obj, created = Person.objects.update_or_create(
first_name='John', last_name='Lennon',
defaults={'first_name': 'Bob'},
)
The update_or_create method tries to fetch an object from database
based on the given kwargs. If a match is found, it updates the
fields passed in the defaults dictionary.
Django 1.7之前:
根据需要更改模型字段值,然后调用.save()来保持更改:
try:
obj = Model.objects.get(field=value)
obj.field = new_value
obj.save()
except Model.DoesNotExist:
obj = Model.objects.create(field=new_value)
# do something else with obj if need be
从Django 1.5开始,model save上有一个update_fields属性。例如:
obj.save(update_fields=['field1', 'field2', ...])
https://docs.djangoproject.com/en/dev/ref/models/instances/
我更喜欢这种方法,因为如果有多个web应用实例更改模型实例的不同部分,它不会产生原子性问题。
如果只想更新模型(如果存在)(而不创建模型),请执行以下操作:
mysql查询:
随着Django 1.7的出现,现在有了一个新的^{} QuerySet方法,它应该完全按照您的要求来做。如果没有在数据库级别强制实现唯一性,请小心潜在的竞争条件。
文档中的示例:
Django 1.7之前:
根据需要更改模型字段值,然后调用
.save()
来保持更改:相关问题 更多 >
编程相关推荐