2011-12-17 11 views
36

Benim views.py'umda Formu kaydetmeden önce değerleri atayım. değişkenler listesi biraz uzun geldiğimden beri, ŞimdiNesne öğe atama hatasını desteklemiyor

projectForm.lat = session_results['lat'] 
projectForm.lng = session_results['lng'] 

(Adam here tarafından açıklandığı gibi) aşağıdaki döngü ile session_results üzerinde döngü istedi: ben o şu şekilde yapmak için kullanılan

for k,v in session_results.iteritems(): 
    projectForm[k] = v 

Ancak döngü çözümü için 'Project' object does not support item assignment hatasını alıyorum. Nedenini anlamakta zorlanıyorum. Project, ModelForm için kullandığım model sınıftır.

Yardımlarınız için teşekkür ederiz!

cevap

46

Hata açık görünüyor: model nesneleri öğe atamasını desteklemiyor. MyModel.objects.latest('id')['foo'] = 'bar', bu aynı hatayı atar.

O

bir döngü içinde kod ilk bloğunu yeniden oluşturmak için ... modeliniz örneği projectForm denir biraz kafa karıştırıcı, eklemekte olacağını setattr

for k,v in session_results.iteritems(): 
    setattr(projectForm, k, v) 
11

bir başka yolu kullanmak gerekir __getitem__, __setitem__ fonksiyonu

def __getitem__(self, key): 
    return getattr(self, key) 

Şimdi erişmek için kendiniz [tuşu] kullanabilirsiniz.