将迭代值从列表保存到单个对象

时间:2016-09-23 10:14:15

标签: django python-2.7 django-models django-forms django-views

我尝试使用for循环在列表中存储多个值。所有都是FloatField类型。我的函数给了我许多具有一个结果的对象。我只需要一个对象,其中所有值都在一行中。

views.py

namesOfModelFields = [f.name for f in ModelName._meta.get_fields()]
resultsOfNames = ['name1', 'name2', 'name3']
resultsOfValue - ['1','2','3']
form = f_Form()
newF = form.save(commit=False)
for i in namesOfModelFields:
    if any(str(i) in s for s in resultsOfNames):
        j = resultsOfValue[resultsOfNames.index(i)]
        form = f_Form({str(i) : float(j)})
        newF = form.save(commit=False)
        newF.save()
if form.is_valid():
    form.save_m2m()

forms.py

class f_Form(ModelForm):

  class Meta:
   model = ModelName
   fields = '__all__'

models.py

class ModelName (models.Model):

 name1 = models.FloatField(null=True, blank=True)
 name2 = models.FloatField(null=True, blank=True)
 name3 = models.FloatField(null=True, blank=True)

我有比3更多的文件。我无法一个接一个地执行此操作

1 个答案:

答案 0 :(得分:0)

我仍然不理解你正在做的任何事情。但是,如果你只是想创建一个模型实例,那么就这样做,不要乱用表单或循环。

values = dict(zip(resultsOfNames, resultsOfValues))
new_item = ModelName.objects.create(**values))