django如何在views.py中使用for循环保存一个大模型?

时间:2016-08-23 02:48:18

标签: django-models

我在models.py中有一个非常大的模型:

简化版是:

class MyModel(models.Model):

    item_1 = models.FloatField(null=True, blank=True)
    ...
    item_20 = models.FloatField(null=True, blank=True)
在views.py中

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'在实例中没有被识别。相反,' name'像其他新字段一样添加到实例...

如何迭代并保存我的模型?

有什么建议吗?

感谢!!!

1 个答案:

答案 0 :(得分: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`

类似的用户getattr()通过循环遍历类实例来获取数据。