title: Conditional Django migration based on a field only present in new version
body: <p>My app that currently depends on Postgres and Django's Postgres-only <code>JSONField</code>. The field works well and I've no interest in another project, but I have prospective-users who want to use my app, but can't while it relies on Postgres.</p>
  <p>Django 3.1 has a cross-platform version of this field —which will work for my needs— but I don't want to force everybody up to Django 3.1; I would like to offer people a choice between Postgres or Django 3.1+. On paper, this is simple enough with a conditional import...</p>
  <pre><code>try:
      from django.db.models import JSONField
  except ImportError:
      from django.contrib.postgres.fields import JSONField
  </code></pre>
  <p>And if I installed Django 3.1 and generated a migration, it could take me from <code>django.contrib.postgres.fields.JSONField</code> to <code>django.db.models.JSONField</code>. But...</p>
  <ul>
  <li>New users will still execute the initial migration. <strong>I will still have a dependency on Postgres.</strong></li>
  <li>Sub-Django 3.1 users won't be able to execute the new migration. <strong>I now have a dependency on Django 3.1.</strong></li>
  </ul>
  <p>This is worse than when I started. How do I do this sort of field migration in a way that will work for everybody?</p>