0

forループを使用してリストから多くの値を1つのオブジェクトに格納しようとしています。すべてがFloatField型です。私の関数は、私に1つの結果を持つ多くのオブジェクトを与えます。 1つの行にすべての値を持つオブジェクトが1つだけ必要です。リストから単一オブジェクトへの反復値を保存する

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.よりもはるかに多くのfiledsを持っていますone

+0

"1つの行にすべての値を持つ1つのオブジェクト"は何を意味しますか?あなたはどんな結果を期待していますか? –

+0

https://i.imgsafe.org/512aacd7e2.png これは私のdbの結果です。すべての値を1行にまとめたい – karwielo

+0

なぜ、各繰り返しで新しいフォームをインスタンス化するのですか?実際、なぜあなたはこれをやっているのですか? –

答えて

0

まだわからないあなたがしているヒンジ。しかし、ただ1つのモデルインスタンスを作成し、それを行い、フォームやループで悩まされたくない場合は、

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

でこれを行うことはできません。 – karwielo

+0

これはうまくいきました。 – karwielo

関連する問題