Don't try to apply defaults to certain database-specific field types.
Review Request #12283 — Created May 16, 2022 and submitted — Latest diff uploaded
On MySQL,
text
,blob
,json
, and theshort
/medium
/long
varieties of the first two are forbidden from having default values.Django Evolution would try to apply these anyway when adding a non-NULL
field or changing a field to be non-NULL (and in fact validated that
such a value would be provided when setting to non-NULL). This would
prevent these types of fields from being added unless they were set to
allow NULL.Now, the evolution op backends can override a
get_field_type_allows_default()
method, which can check a field to
determine if default values should be allowed. This is used when
building a column schema definition, ensuring that anyDEFAULT
-related
SQL is omitted if not allowed for the field.
Unit tests pass for all supported database types on all supported
versions of Django.