溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何解決django數(shù)據(jù)庫get_or_create函數(shù)返回值是tuple的問題

發(fā)布時(shí)間:2020-07-27 11:32:20 來源:億速云 閱讀:247 作者:小豬 欄目:開發(fā)技術(shù)

這篇文章主要講解了如何解決django數(shù)據(jù)庫get_or_create函數(shù)返回值是tuple的問題,內(nèi)容清晰明了,對(duì)此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會(huì)有幫助。

get_or_create函數(shù)比較好用。

如果查詢到就返回,如果沒查詢到就向數(shù)據(jù)庫加入新的對(duì)象。

e.g.

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

注意:返回的是tuple,:(對(duì)象, 是否是創(chuàng)建的)

e.g. (size, created)

補(bǔ)充知識(shí):Django update_or_create 注意事項(xiàng)

需求: model 修改數(shù)據(jù)庫數(shù)據(jù),數(shù)據(jù)存在則更新,不存在則保存

update_or_create 用法:

update_or_create(defaults=None, **kwargs)

kwargs: 來更新對(duì)象或創(chuàng)建一個(gè)新的對(duì)象。

defaults: 是由 (field, value) 對(duì)組成的字典,用于更新對(duì)象。

返回一個(gè)由 (object, created)組成的元組,

object: 是一個(gè)創(chuàng)建的或者是被更新的對(duì)象,

created: 是一個(gè)標(biāo)示是否創(chuàng)建了新的對(duì)象的布爾值。

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()
# 如果模型的字段數(shù)量較大的話,這種模式就變的非常不易用。上面的示例可以用 update_or_create() 重寫:
obj, created = Person.objects.update_or_create(
  first_name='John', last_name='Lennon', defaults=updated_values)

看完上述內(nèi)容,是不是對(duì)如何解決django數(shù)據(jù)庫get_or_create函數(shù)返回值是tuple的問題有進(jìn)一步的了解,如果還想學(xué)習(xí)更多內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI