django 數(shù)據(jù)庫 get_or_create函數(shù)返回值是tuple的問題
get_or_create函數(shù)比較好用。
如果查詢到就返回,如果沒查詢到就向數(shù)據(jù)庫加入新的對象。
e.g.
size = Size.objects.get_or_create(sizeName=size_text)
注意:返回的是tuple,:(對象, 是否是創(chuàng)建的)
e.g. (size, created)
補(bǔ)充知識:Django update_or_create 注意事項(xiàng)
需求: model 修改數(shù)據(jù)庫數(shù)據(jù),數(shù)據(jù)存在則更新,不存在則保存
update_or_create 用法:
update_or_create(defaults=None, **kwargs)
kwargs: 來更新對象或創(chuàng)建一個(gè)新的對象。
defaults: 是由 (field, value) 對組成的字典,用于更新對象。
返回一個(gè)由 (object, created)組成的元組,
object: 是一個(gè)創(chuàng)建的或者是被更新的對象,
created: 是一個(gè)標(biāo)示是否創(chuàng)建了新的對象的布爾值。
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)
以上這篇django 數(shù)據(jù)庫 get_or_create函數(shù)返回值是tuple的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
代碼講解Python對Windows服務(wù)進(jìn)行監(jiān)控
本篇文章給大家分享了通過Python對Windows服務(wù)進(jìn)行監(jiān)控的實(shí)例代碼,對此有興趣的朋友可以學(xué)習(xí)參考下。2018-02-02
詳解分布式系統(tǒng)中如何用python實(shí)現(xiàn)Paxos
提到分布式算法,就不得不提 Paxos 算法,在過去幾十年里,它基本上是分布式共識的代 名詞,因?yàn)楫?dāng)前最常用的一批共識算法都是基于它改進(jìn)的。比如,F(xiàn)ast Paxos 算法、 Cheap Paxos 算法、Raft 算法、ZAB 協(xié)議等等。2021-05-05
python3 sleep 延時(shí)秒 毫秒實(shí)例
這篇文章主要介紹了python3 sleep 延時(shí)秒 毫秒實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05
Python 創(chuàng)建子進(jìn)程模塊subprocess詳解
這篇文章主要介紹了Python 創(chuàng)建子進(jìn)程模塊subprocess詳解,本文詳細(xì)講解了subprocess模塊的方法、參數(shù)、使用實(shí)例等,需要的朋友可以參考下2015-04-04
Python使用pandas對數(shù)據(jù)進(jìn)行差分運(yùn)算的方法
今天小編就為大家分享一篇Python使用pandas對數(shù)據(jù)進(jìn)行差分運(yùn)算的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12
Python?中?threading.Thread.join()?的使用方法示例詳解
threading.Thread.join()用于阻塞當(dāng)前線程,直到調(diào)用它的線程對象執(zhí)行完成或者超時(shí),在Python中,想要充分利用多線程的優(yōu)勢,就需要對threading模塊中的 Thread 類了解,這里有一個(gè)非常簡單的多線程程序,幫助理解 threading.Thread.join 方法,感興趣的朋友跟隨小編一起看看吧2024-06-06

