2016-08-23 2 views
0

나는 models.py에 매우 큰 모델을 가지고 :django views.py에서 for 루프를 사용하여 큰 모델을 저장하는 방법?

단순화 된 버전은 다음과 같습니다

class MyModel(models.Model): 

    item_1 = models.FloatField(null=True, blank=True) 
    ... 
    item_20 = models.FloatField(null=True, blank=True) 

views.py에서이 필드 이름 'ITEM_1'와

def form_valid(self, form_class): 
    instance = form_class.save(commit=False) 

    for i in range(1, 20): 
     name = 'item_' + str(i) 
     instance.name = i 

... . 'item_20'을 (를) 인스턴스에서 인식 할 수 없습니다. 대신 '이름'이 다른 새 필드와 같이 인스턴스에 추가됩니다 ...

모델을 반복하고 저장하려면 어떻게해야합니까?

의견이 있으십니까?

감사합니다 !!!

답변

0

필드를 반복하고 그 값을 설정하려면 setattr을 사용해야합니다. 이 시도 :

def form_valid(self, form_class): 
    instance = form_class.save(commit=False) 

    for i in range(1, 20): 
     name = 'item_' + str(i) 
     setattr(instance, name, value) # Where value is the data you wanted to save in the field `name` 

Similary 사용자 getattr()를 클래스 인스턴스를 통해 반복하여 데이터를 얻을 수 있습니다.

관련 문제