0

Ich versuche, in einem Objekt viele Werte aus der Liste mit for loop zu speichern. Alle sind vom FloatField-Typ. Meine Funktion gibt mir viele Objekte mit einem Ergebnis. Ich brauche nur ein Objekt mit allen Werten in einer Zeile.Iterationswerte von der Liste bis zum einzelnen Objekt speichern

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) 

Ich habe viel mehr fileds als 3 kann ich nicht dieses tun, indem ein

+0

Was bedeutet "ein Objekt mit allen Werten in einer Zeile"? Welches Ergebnis erhoffst du dir? –

+0

https://i.imgsafe.org/512aacd7e2.png Dies ist ein Ergebnis in meinem db. Ich möchte alle Werte in einer Zeile haben. – karwielo

+0

Warum instanziieren Sie also in jeder Iteration ein neues Formular? Warum machst du das überhaupt? –

Antwort

0

Ich verstehe immer noch nicht was du tust. Wenn Sie jedoch nur eine einzige Modellinstanz erstellen möchten, tun Sie dies und machen Sie sich keine Gedanken über Formulare oder Schleifen.

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

tun, weil ich Wörter in doc finde und es mit Namen in Modellen – karwielo

+0

vergleichen. Es funktioniert, vielen Dank! – karwielo

Verwandte Themen