| Fields | null=True | blank=True |
|---|---|---|
| CharField, TextField, SlugField, EmailField, CommaSeparatedIntegerField | DON'T Django's convention is to store empty values as the empty string, and to always retrieve NULL or empty values as the empty string for consistency. | OK Do this if you want the corresponding form widget to accept empty values. If you set this, empty values get stored as empty strings in the database. |
| BooleanField | DON'T Use NullBooleanField instead. | DON'T |
| IntegerField, FloatField, DecimalField | OK If you wabt to be able to set the value to NULL in the database | OK if you want the corresponding form widget to accept empty values. if so out will also want to set null=True |
| DateTimeField, DateField, TimeField | OK if you want to be able to set the value to NULL in the database. | OK If you want the corresponding form widget to accept empty values, or if you are using auto now or auto now add. If so, you will also want to set null=True. |
| ForeignKey, ManyToManyField, OneToOneField | OK if you want to be able to set the value to NULL in the database.. | OK if you want the corresponding form widget (e.g. the select box) to accept empty values. |
| IPAddressField, GenericIPAddressField | OK if you want to be able to set the value to NULL in the database. | NOT RECOMMENDED In PostgreSQL, the native inet type is used here and cannot be set to the empty string. (Other database backends use char or varchar for this, though.) |
Note: IPAddressField in PostgreSQL. At the time of this writing, there is an open ticket (#5622) related to IPAddressFields: ‘Empty ipaddress raises an error (invalid input syntax for type inet: "") [sic].’ Until this ticket is resolved, we recommend using null=True and blank=False with IPAddressFields. See http://code.djangoproject.com/ticket/5622 for more details
| Field | Use |
|---|---|
| CharField | blank=True |
| TextField | blank=True |
| SlugField | blank=True |
| EmailField | blank=True |
| CommaSeparatedIntegerField | blank=True |
| BooleanField | use NullBooleanField |
| IntegerField | blank=True, null=True |
| FloatField | blank=True, null=True |
| DecimalField | blank=True, null=True |
| DateTimeField | blank=True, null=True |
| DateField | blank=True, null=True |
| TimeField | blank=True, null=True |
| ForeignKey | blank=True, null=True |
| ManyToManyField | blank=True, null=True |
| OneToOneField | blank=True, null=True |
| IPAddressField | null=True |
| GenericIPAddressField | null=True |