If u are adding the null=True only because documentation says:
... it’s recommended you always create new columns with null=True, as this way they will be added immediately.
I don't think that would be necessary here in the ArrayField. Because you have already added a default value to your field. So any entry which is already present in database will have this default value(which is empty list in this case).
null=True is added so that, in case you don't specify a default value, the field value can be set to null, and you don't have enter a default value manually during migration.
In future if u don't plan to enter null values to this field, then you can omit the null=True part.
Let us say you have a table with following data:
id | user_id
----+---------
1 | 66
2 | 105
3 | 110
4 | 174
After adding default=list and doing migrations, your data would be something like this. Note that you don't need to specify null=True in this case.
id | user_id | tag
----+---------+-----
1 | 66 | {}
2 | 105 | {}
3 | 110 | {}
4 | 174 | {}
In case, you don't specify a default value and set null=True, you data would be:
id | user_id | tag
----+---------+-----
1 | 66 |
2 | 105 |
3 | 110 |
4 | 174 |
ArrayFieldnullable, as the base_field is just used for type, validation etc.null=True, you'll probably want to setblank=Trueas well. Otherwise you will get errors when cleaning model forms.