we usually use lazy migrations. you can override the `wrap` function on a document and then do a transform before the json gets sent to the class (so in this case you would just convert strings to lists of one string, and `None` to an empty list).

note that this doesn't work if a couch view is dependent on the data being in a certain structure. if that's the case that view would also need to be updated to accommodate both formats.