title: Using arbitrary methods or attributes as fields on Django ModelAdmin objects?
body: <p>Using Django 1.1:</p>
  
  <p>The <a href="http://docs.djangoproject.com/en/1.1/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_display" rel="noreferrer">Django admin docs describe</a> using arbitrary methods or attributes on a ModelAdmin object in the <code>list_display</code> class attribute. This is a great mechanism for displaying arbitrary information in the list display for a Model. However, there does not appear to be a similar mechanism for the change form page itself. <strong>What is the simplest way to accomplish this useful little feature to display arbitrary, non-field-derived information on the ModelAdmin change form page?</strong></p>
  
  <p>A concrete example of the desired setup:</p>
  
  <pre><code>class CustomUserAdmin(UserAdmin):
      def registration_key(self, obj):
          """Special method for looking up and returning the user's registration key
          """
          return 'the_key'
  
      list_display = ('email', 'first_name', 'last_name', 'is_active', 'is_staff', 
                      'registration_key')  # &lt;- this works
  
      fields = ('email', 'first_name', 'last_name', 'is_active', 'is_staff',
                'registration_key')  # &lt;- this DOESN'T work?
  </code></pre>