Legend:

Also the simplest option is to always insert as NULL if null and unique are True as there are very few real world cases where an empty value is an actual valid option. One could also make this case for non-unique but null fields, however there's no actual distinction between a NULL value and an empty string in this case.

4

5

And there may be another solution. Backwards compatibility may be an issue but I think solvable. Instead of the blank field being a boolean, make it an integer flag:

6

- blank = models.RESTRICT acts as blank=False now

7

- blank = models.SET_EMPTY acts as blank=True now and sets field to the 'empty' value