2015-09-22 30 views
0

在下面的代碼中,如果變量存在於字典中,我想保存它,如何做到這一點。這是我想在我之前的問題中將str轉換爲變量的原因。python/django模式保存參數錯誤

所以這裏的意圖是,如果模型中有n個列,我將其作爲列表並將其與請求json di進行比較。如果變量被發現的話,我想它分配給公司的對象,並將其保存

models.py

class Company(models.Model): 
    version = models.IntegerField() 
    old_comp = models.CharField() 

views.py

c= Company() 
li = ['version'] 
di = {'a':1,'version':2} 
for data in li: 
    if data in di: 
    c.data = di[data] //gives an error since data is unknown to c 
    c.save() 
+0

這是不明確的。你究竟想在這裏做什麼?請使用適當的描述性變量名稱作爲開始。 –

回答

2

請嘗試以下代碼,

免責聲明:我還沒有使用Django的經驗。

c = Company() 
param_list = ['version'] 
param_vals = {'a':1,'version':2} 
for param in param_list: 
    if param in param_vals: 
    setattr(c, param, param_vals[i]) 
c.save() 
+1

對'c.save()'的調用應該在for循環之外 - 當一個足夠的時候不需要打db b次。 –

+0

@brunodesthuilliers:更新的答案,謝謝你的建議:) – mergenchik

0

請看例子:

class Company: 
    def version(): 
     print '1.1.1' 
if __name__ == '__main__': 
    b='version' 
    a=Company() 
    a.b(AttributeError: Company instance has no attribute 'b') 

它是同一個問題與您的代碼,因爲ATTR不能使用一個變量,你可以直接使用c.version。