Fix serializing JSONField for migration files.

Review Request #7686 — Created Oct. 9, 2015 and submitted

Information

Djblets
release-0.9.x

Reviewers

JSONField wasn't migration-friendly, as a default value of anything but
a string would attempt to get fed into the database backend, breaking it
when applying migrations. Fixing that manually would then result in
Django thinking the value has changed again, prompting new migrations.

We now have a custom deconstruct() method, which serializes the field
for migrations. We simply encode the default value to a string, much
like how it'd be stored in the database, so that the migration files
will have safe and comparable values.

Successfully generated migration files that had serialized values. I also
attempted to generate new ones after using the hand-fixed migration files,
and saw that Django no longer thought it needed to generate new migration
files.

reviewbot
  1. Tool: Pyflakes
    Processed Files:
        djblets/db/fields.py
    
    
    
    Tool: PEP8 Style Checker
    Processed Files:
        djblets/db/fields.py
    
    
  2. 
      
david
  1. Ship It!
  2. 
      
chipx86
Review request changed
Status:
Completed
Change Summary:
Pushed to release-0.9.x (b2731cf)