2016-09-15 22 views
0

以下代碼是否正確?在執行try/except塊之後,e應該在每次迭代開始時引用一個新對象。我懷疑有一些干擾舊對象,因爲現在有一個我現在無法再現的錯誤。Django循環中的模型參考分配

from webapp.models import Profile 

.... 
    for e in Profile.objects.all(): 
     if not e.profile_link in profile_data: 
      e.delete() 

    try: 
     for key, employee in profile_data.iteritems(): 
      #e still holds old reference 
      try: 
       #edit DB object if exists 
       e = Profile.objects.all().filter(profile_link=key)[0] 
      except Exception: 
       #or create a new one 
       e = Profile(profile_link=key) 

      #modify e using employee 

      e.save() 
    except Exception: 
     #handle exception 
+0

你的意思是將try/except塊縮進到for循環之外? – souldeux

+1

不好有未定義的異常。讓它失敗,瞭解異常發生的情況,並處理這些問題 –

+0

可能沒有錯誤。你應該做一個函數調用'e.save()'而不是'e.save' – machaku

回答

0

如果你想把所有的try/catch塊用於循環,你需要確保你的identation是正確之內運行

嘗試(檢查壓痕)

from webapp.models import Profile 

.... 
for e in Profile.objects.all(): 
    if not e.profile_link in profile_data: 
     e.delete() 
    try: 
     for key, employee in profile_data.iteritems(): 
      #e still holds old reference 
      try: 
       #edit DB object if exists 
       e = Profile.objects.get(profile_link=key) 
      except Exception: 
       #or create a new one 
       e = Profile(profile_link=key) 

      #modify e using employee 

      e.save() 
    except Exception: 
     #handle exception