2013-05-13 4 views
8

Ich lade einige Daten aus einer Excel-Datei mit xlrd und wandle diese Daten in Modelle (mit hauptsächlich IntegerField-Werten) in Django. Meine Excel-Datei enthält eine Menge fehlender Daten. Leider werden diese fehlenden Daten in meinen Modellen anstelle von NULL in den Wert 0 konvertiert. Dies bedeutet, dass, wenn mein Personenmodell kein Alter hat, dieses Alter als 0 anstatt als NULL aufgezeichnet wird.Wie setze ich NULL für IntegerField statt 0?

Was ist der beste Weg, dies zu ändern? Ich habe versucht, dies zu tun:

age = models.IntegerField(blank=True, null=True) 

Aber die leeren Felder immer noch standardmäßig auf 0 gesetzt.

+0

Haben Sie einen Standard in Ihrem Formular angegeben? – karthikr

+0

Was ist Ihr Datenbank-Backend? –

+0

DB-Backend ist MySQL. Keine Standardeinstellungen Soll ich etwas wie models.IntegerField (leer = True, Null = True, Standard = NULL) tun? – jyli7

Antwort

6

Statt mit

age = models.IntegerField() 

Verwendung

age = models.IntegerField(blank=True, null=True) 

Wenn wir

blank=True, null=True 

angeben wird er Ihnen in dieser Spalte

+0

Ich mache das und versuche, die Daten des Integer-Feldes auf einer Android-App abzurufen, wo es als 0 angezeigt wird. Ist das ein ORM-Problem oder wird es als 0 übertragen? –

+0

Ich glaube nicht, dass das ORM-Problem ist. Hat Ihr Schema einen Standardwert von 0? –

+5

Dies ist rückwärts - Angabe von null = True * erlaubt * NULL in der Spalte gespeichert werden. –

-2

Das Leben ist nicht das war null zu speichern einfach für mich, wenn ich django 1.7 verwende: P hat nicht viel geholfen, aber stattdessen habe ich einen Standard = 0 als Parameter, age = models.IntegerField(default=0), die meine Probleme lösen und es tut im Wesentlichen alles, was ich wollte, um es zu tun.

+2

Das OP will _void_ '0', nicht _force_ es. –

Verwandte Themen