update_or_create()


update_or_create 默認值=無 ** kwargs

使用給定更新對象的便捷方法,kwargs必要時創建新對象defaults是用於更新對象的(字段,值)對的字典。值中的值defaults可以是callables。

返回一個元組,其中是創建或更新的對象,是一個布爾值,指定是否創建了新對象。(object, created)objectcreated

update_or_create方法嘗試根據給定的數據從數據庫中獲取對象kwargs如果找到匹配項,則會更新defaults字典中傳遞的字段 

這意味着作為boilerplatish代碼的快捷方式。例如:

 1 defaults = {'first_name': 'Bob'}
 2 try:
 3     obj = Person.objects.get(first_name='John', last_name='Lennon')
 4     for key, value in defaults.items():
 5         setattr(obj, key, value)
 6     obj.save()
 7 except Person.DoesNotExist:
 8     new_values = {'first_name': 'John', 'last_name': 'Lennon'}
 9     new_values.update(defaults)
10     obj = Person(**new_values)
11     obj.save()

隨着模型中字段數量的增加,這種模式變得非常笨拙。上面的例子可以update_or_create()像這樣重寫

1 obj, created = Person.objects.update_or_create(
2     first_name='John', last_name='Lennon',
3     defaults={'first_name': 'Bob'},
4 )

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM