2016-09-23 80 views
0

我試圖在循環中使用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) 

我有更多的Fileds比3。我不能這樣做一個一個

+0

什麼是「一個對象與一行中的所有值」是什麼意思?你希望得到什麼結果? –

+0

https://i.imgsafe.org/512aacd7e2.png 這是我的分貝結果。我想要將所有值都放在一行中。 – karwielo

+0

那麼爲什麼你要在每次迭代中實例化一個新表單呢?事實上你爲什麼要這樣做? –

回答

0

我還是不明白感到你在做什麼。但是,如果你只是想創建一個模型實例,那就這樣做,而不要用窗體或循環來解決問題。

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

,因爲我在文檔中找到單詞並將其與機器名稱進行比較 – karwielo

+0

它的工作原理非常感謝! – karwielo

相關問題