Django 1.4 - bulk_create mit einer Liste

8

Ich habe eine Liste, für die ich Einträge in der Datenbank erstellen möchte.

Wie kann ich das tun, ohne die Liste durchzublättern, was, wie ich vermute, den Punkt von bulk_create wegnehmen würde.

Zum Beispiel:

Anstelle von ...

%Vor%

Wie könnte ich ...

%Vor%

Liste enthält:

%Vor%

Es ist einfach eine Liste von IDs, nicht in der Form, die direkt in bulk_create eingegeben werden kann (nicht mit den Eingabefeldern formatiert). Ich nehme jedoch an, dass es möglich wäre, die Liste vor dem Übergeben in bulk_create zu ändern.

    
snakesNbronies 21.05.2012, 19:27
quelle

3 Antworten

21

bulk_create verwendet eine Liste von Objekten als einzelnes Argument in einem einzigen Aufruf. Was Sie in Ihrem Beispiel tun, wäre dasselbe wie das Schleifen und Ausführen von create()

Referenzierung: Ссылка

%Vor%

aList bezieht sich auf eine Liste von Objekten, die Sie bereits instanziiert haben und die mit einer Abfrage in großen Mengen erstellt werden müssen. Wenn Sie zum Beispiel diese Liste nicht gespeicherter Instanzen noch nicht hatten und Sie eine Liste mit Werten hatten, könnten Sie Ihre Liste mit etwas wie:

erstellen %Vor%

Vielleicht haben Sie auch eine Liste von Rohwörterverzeichniswerten, die dem Modell zugeordnet sind:

%Vor%     
jdi 21.05.2012, 19:33
quelle
3
%Vor%

Sie übergeben dem ORM eine Liste der instanziierten Objekte in einer Liste. Verwenden Sie dies, und vorausgesetzt, orig_list ist eine Liste von Wörterbüchern,

%Vor%     
Andrew Sledge 21.05.2012 19:33
quelle
1

Probieren Sie dies aus, und der Punkt von bulk_create besteht darin, die Datenbank nur einmal zu treffen, egal wie viele Sie erstellen. Deshalb halten wir es für effizient.

%Vor%

--- Bearbeiten ---

Angenommen, Sie haben ein Modell wie dieses in Ihrer models.py:

%Vor%

Und Sie haben eine Liste wie folgt (direkt von Ihrer Frage kopiert):

%Vor%

Einfach eine Zeile:

%Vor%     
xbtsw 21.05.2012 19:34
quelle

Tags und Links