DEV Community

Cover image for Difference between Null and Blank in Django Model
Adam WaƘiƑ
Adam WaƘiƑ

Posted on

Difference between Null and Blank in Django Model

In Django, many of us have some confusion between these two fields in a model Null and Blank, in short:

  • Null is related to a database.
  • Blank is related to an HTML form.

sirkif-django-python.png

When we set:

  • null=True which means that we inform our database that we can store empty value as NULL, no-value, without any data, ( Default value of null is False ).

  • blank=True which means that our Form, our input will have a required attribute set to false ( by default is true ), then allow the user to enter an empty field, ( Default value of blank is False which means the required attribute is True ).

Question

You may ask yourself when we have string-based fields in a model such as CharField and TextField, Null and Blank fields are set to True, then Django stores an empty string (" ") in a database instead of Null, WHY 🤔🤔?

Answers

  1. First because when our user submits an empty value, our input will return an empty string ( HTML inputs type="text" are always return string values ).

  2. Second, and this important is Null in SQL world is treated as Falsy value and Blank ( empty string ) in Python world is also Falsy.

Therefore, it would be inefficient and redundant for Django to deal with two possible values that are treated as Falsy values ( No data & Empty String ).

Summary

Since the HTML input returns a string value at the end, Django preferred to use an empty string (" "), not Null.

Discussion (0)