2013-05-13 15 views
8

Przesyłam niektóre dane z pliku Excela za pomocą xlrd i zamieniając te dane na modele (głównie z wartościami IntegerField) w Django. Mój plik Excela zawiera mnóstwo brakujących danych. Niestety te brakujące dane są konwertowane do wartości 0 w moich modelach, zamiast wartości NULL. Oznacza to, że gdy mój model osoby nie ma wieku, wiek ten jest rejestrowany jako 0, a nie jako NULL.Jak ustawić NULL dla IntegerField zamiast ustawiania 0?

Jaki jest najlepszy sposób na zmianę tego? Próbowałem to zrobić:

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

Ale puste pola nadal domyślnie ustawione są na 0.

+0

Czy masz domyślne określone w formularzu? – karthikr

+0

jaki jest twój backend bazy danych? –

+0

Backend bazy danych to MySQL. Nie masz zestawu domyślnego. Czy powinienem zrobić coś takiego jak models.IntegerField (blank = True, null = True, default = NULL)? – jyli7

Odpowiedz

6

Zamiast

age = models.IntegerField() 

korzystanie

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

Kiedy określić

blank=True, null=True 

pozwoli na przechowywanie NULL w tej kolumnie

+0

Robię to i próbuję odzyskać dane pola liczby całkowitej w aplikacji na Androida, gdzie pojawia się jako 0. Czy jest to problem ORM, czy jest przesyłany jako 0? –

+0

Nie sądzę, że to jest problem ORM. Czy Twój schemat ma domyślną wartość 0? –

+5

To jest wstecz - określając null = True * pozwala * NULL być przechowywane w kolumnie. –

-2

życie nie było, że łatwo dla mnie, gdy używam django 1.7: P niewiele mi pomogło, ale zamiast tego dodałem domyślny = 0 jako parametr, age = models.IntegerField(default=0), który rozwiązuje moje problemy i zasadniczo robi wszystko, co chciałem.

+2

Program OP chce _avoid_ '0', a nie _force_ it. –

Powiązane problemy