【发布时间】:2016-09-23 10:14:14
【问题描述】:
我正在尝试使用 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个多得多。我不能一个一个地做这个
【问题讨论】:
-
“一个对象在一行中包含所有值”是什么意思?你希望得到什么结果?
-
i.imgsafe.org/512aacd7e2.png 这是我数据库中的结果。我想将所有值放在一行中。
-
那么你为什么要在每次迭代中实例化一个新表单呢?事实上,你为什么要这样做?
-
这是我尝试的最后一个版本。当 newF.save() 不在 for 循环中时,它只保存最后一条记录。我也尝试在 for 循环中创建两个列表,然后以 newF.iList = iListNum 的形式保存它,但它也不起作用
-
但是你这里没有一个列表,我不明白你为什么还有一个循环。也许您应该发布您的模型定义和
namesOfModelField、resultsOfNames和resultsOfValue中的确切内容的示例,并解释它们的来源。
标签: django python-2.7 django-models django-forms django-views