Pusty model Django = False nie działa?
Mam następujący model w Django 1.5:
class Person(models.Model):
name = models.CharField(max_length=50)
Zauważ, że zgodnie zhttps://docs.djangoproject.com/en/dev/ref/models/fields/ name.blank jest domyślnie False, co oznacza, że musi być określony.
Mogłem jednak pomyślnie utworzyć obiekt Person w następujący sposób:
Person.objects.create()
Zwróć uwagę, że nazwa nie jest określona. Co się dzieje?
Ok, odpowiedź z dokumentów to:
Zauważ, że to jest inne niż null. null jest czysto związany z bazą danych, podczas gdy pusty jest związany z walidacją. Jeśli pole ma puste = Prawda,walidacja formularza pozwoli na wpisanie pustej wartości. Jeśli pole jest puste = Fałsz, pole będzie wymagane.
Inny haczyk:
Zwróć uwagę, że walidatory nie będą uruchamiane automatycznie po zapisaniu modelu, ale jeśli używasz formularza modelowego, uruchomi on walidatory na dowolnych polach zawartych w formularzu.
Twoim obowiązkiem jest wywołanie czystych metod przed zapisaniem, jeśli nie używasz formularza.