1. 程式人生 > 程式設計 >django 資料庫 get_or_create函式返回值是tuple的問題

django 資料庫 get_or_create函式返回值是tuple的問題

get_or_create函式比較好用。

如果查詢到就返回,如果沒查詢到就向資料庫加入新的物件。

e.g.

size = Size.objects.get_or_create(sizeName=size_text)

注意:返回的是tuple,:(物件,是否是建立的)

e.g. (size,created)

補充知識:Django update_or_create 注意事項

需求: model 修改資料庫資料,資料存在則更新,不存在則儲存

update_or_create 用法:

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)

以上這篇django 資料庫 get_or_create函式返回值是tuple的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。