2010-04-23 33 views
3

有沒有一種方法可以通過使用字典如何使用字典保存django對象?

來保存模型。 這是工作的罰款,

p1 = Poll.objects.get(pk=1) 

p1.name = 'poll2' 
p1.descirption = 'poll2 description' 

p1.save() 

但如果我有字典像{「名」:「poll2」,「描述:‘poll2說明’}

有一個簡單的方法來保存這樣的字典直接輪詢

回答

22

drmegahertz的解決方案WO如果你是從頭開始創建一個新對象的話。不過,在你的例子中,你似乎想要更新現有的對象。您可以通過訪問__dict__屬性,每一個Python對象有做到這一點:

p1.__dict__.update(mydatadict) 
p1.save() 
+0

這對於堅持DRY原則是非常有用的,而在ModelForm'的''的保存()'方法做棘手的東西。例如,我有一個表單,它將'cleaned_data'複製到一個新字典中,然後刪除它的某些字段 - 因爲來自其他字段的值使它們不相關或相互矛盾 - 然後僅將該字典中剩餘的字段保存到實例中並且該實例是已經被初始化的對象)。 – hangtwenty 2012-11-24 19:26:42

14

你可以解開字典,使得其鍵和值像命名參數:

data_dict = {'name': 'foo', 'description': 'bar'} 

# This becomes Poll(name='foo', description='bar') 
p = Poll(**data_dict) 
... 
p.save() 
相關問題