2016-05-15 6 views
0

Das Folgende ist mein Datenbankmodell:Erstes Datenbankobjekt in Django Python

id | dept | bp | s | o | d | created_by | created_date 

dept und bp zusammen einen eindeutigen Index für die Tabelle haben. Dies bedeutet, dass es immer 30 verschiedene Datensätze in der Datenbank unter denselben dept und bp gibt. Ich habe versucht, eine Update-Funktion für die Datensätze durchzuführen, indem ich das Objekt zuerst anforderte. Das folgende ist die Art und Weise, wie ich versuchte, das Objekt zu bekommen:

Aber es gibt mir immer 30 Datensätze (natürlich). Wie kann ich dies zu einem einzigen Objekt machen? Irgendwelche Vorschläge?

+0

Fügen Sie der Liste "unique_together" ein weiteres Feld hinzu, das jeden Datensatz * wirklich * eindeutig macht. – ozgur

+2

Warum gibt es 30 Datensätze für gleiche eindeutige Werte? – AKS

+0

Weil die Datenbanktabelle nicht normalisiert ist. Es ist eine Tabelle mit vielen Werten. Nach rechts wird ein dept-bp-Objekt 30 Objekte in einer anderen Tabelle haben. – vellattukudy

Antwort

0

In Django hat jede Tabelle in der Datenbank automatisch eine Spalte mit dem Namen id. Dies ist die Standardspalte primary key und für jedes Objekt in einer Tabelle eindeutig.

So können Sie tun

Sod_object = Sod.objects.get(id=1) 

das erste Objekt in der Tabelle zu holen.

Um alle 30 Objekte Ihrer dept-bp Kombination zu aktualisieren, können Sie filter() durch diese Werte

sods = Sod.objects.filter(dept=dept_name, bp=bp_name) 

und dann jeden aktualisieren und speichern. Django wird sich die einzelnen Datensätze intern an ihre id erinnern.

for sod in sods: 
    sod.o = 1 
    sod.save()