gpt4 book ai didi

Django update_or_create 即使没有变化也在更新?

转载 作者:行者123 更新时间:2023-12-05 01:13:57 25 4
gpt4 key购买 nike

我有一个名称字段为“jule”的用户。如果我尝试使用完全相同的名称来更新它:

obj, created = Person.objects.update_or_create(first_name='jule', defaults={'first_name': 'jule'})

这会在我的数据库中执行操作吗?或者 django ORM 是否检测到没有更改(然后不在我的数据库中执行任何操作)?

我需要这个来优化我的循环代码:)

感谢您的帮助!

最佳答案

来自 docs :

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.

This is meant as a shortcut to boilerplatish code. For example:

defaults = {'first_name': 'Bob'}
try:
obj = Person.objects.get(first_name='John', last_name='Lennon')
for key, value in defaults.items():
setattr(obj, key, value)
obj.save()
except Person.DoesNotExist:
new_values = {'first_name': 'John', 'last_name': 'Lennon'}
new_values.update(defaults)
obj = Person(**new_values)
obj.save()

示例代码描述了 update_or_create 的确切作用。

关于Django update_or_create 即使没有变化也在更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59291276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com