2016-08-23 5 views
0

私はmodels.pyで非常に大きなモデルがあります:django views.pyでforループを使って大きなモデルを保存する方法は?

簡略化されたバージョンは、次のとおりです。views.pyで

class MyModel(models.Model): 

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

:これにより

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_1' .. 。 '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():これを試してみてください。

関連する問題