title: Change drop-down labels for Django UserAdmin
body: <p>I have a <code>User</code> model with a <code>timezone</code> field on it:</p>
  
  <pre class="lang-py prettyprint-override"><code>class User(AbstractBaseUser, PermissionsMixin):
      timezone = models.CharField(
          max_length=64,
          choices=[(tz, tz) for tz in pytz.common_timezones],
          default="UTC",
      )
  </code></pre>
  
  <p>When viewed in Django admin, this creates a drop-down list of timezones, but only of the names. I would like to dynamically generate labels for this drop-down that add the offset as a prefix (e.g. <code>+02:00</code>) and sort the list by that. I know I can create these by doing something like:</p>
  
  <pre class="lang-py prettyprint-override"><code>choices=[
      (tz, display_with_offset(tz))
      for tz in pytz.common_timezones
  ],
  </code></pre>
  
  <p>where <code>display_with_offset</code> generates the required label, but I think this would only calculate it when the migrations are run and would ignore any daylight savings changes that happen throughout the year for some regions.</p>
  
  <p>My admin file looks like this:</p>
  
  <pre class="lang-py prettyprint-override"><code>class MyUserAdmin(UserAdmin):
      fieldsets = [
          ("Info", {"fields": ("timezone")}),
      ]
  
  admin.site.register(models.User, MyUserAdmin)
  </code></pre>
  
  <p>Is there a way I can dynamically set the drop-down labels?</p>