title: django admin: adding a new object as a foriegn key child in admin interface
body: <p>I have a custom user object <code>GameUser</code>, a profile <code>UserInfo</code> that attaches to each user with information, and a Weapon model that each profile gets associated to, but can only have one at a time. </p>
  
  <p>I want to be able to look up and existing <code>GameUser</code> in my admin interface and, in the change form, have the option to create an associate a new Weapon to that <code>UserInfo</code> profile. </p>
  
  <p>Here's my models:</p>
  
  <pre><code>class GameUser(AbstractBaseUser, PermissionsMixin):
      email = models.EmailField()
      # ...etc
  
  class UserInfo(models.Model):
      first = models.CharField(max_length=30)
      last = models.CharField(max_length=30)
      # ...etc
  
      # relations
      user = models.OneToOneField(GameUser)
      weapon = models.ForeignKey('Weapon', null=True)
  
  class Weapon(models.Model):
      name = models.CharField(max_length=20)
      # ...etc
  </code></pre>
  
  <p>And my <code>admin.py</code>:</p>
  
  <pre><code>class GameUserChangeForm(forms.ModelForm):
      password = ReadOnlyPasswordHashField()
  
      class Meta:
          model = GameUser
          fields = ('email', 'password')
  
      def clean_password(self):
          return self.initial["password"]
  
  class GameUserAdmin(UserAdmin):
      form = GameUserChangeForm
  
      list_display = ('email', 'is_admin')
      list_filter = ('is_admin',)
      fieldsets = (
          (None, {'fields': ('email', 'password')}),
          ('Permissions', {'fields': ('is_admin',)}),
      )
  
      add_fieldsets = (
          (None, {
              'classes': ('wide',),
              'fields': ('email', 'password1', 'password2')}
          ),
      )
      search_fields = ('email',)
      ordering = ('email',)
      filter_horizontal = ()
  
  class UserInfoAdmin(admin.ModelAdmin):
      fieldsets = [
          ('Personal Information', {'fields': [
              'first', 'last']
          }),
          # ... etc
      ]
  
      list_display = ('first', 'last')
      search_fields = ['city', 'state'] 
  
  admin.site.register(UserInfo, UserInfoAdmin)
  admin.site.register(GameUser, GameUserAdmin)
  </code></pre>
  
  <p>If there is a Weapon associated with that <code>GameInfo</code>, I'd like to display it there inline. If not, I'd like to be able to create a new <code>Weapon</code> object for that <code>GameInfo</code> and set its fields. </p>
  
  <p>I should mention I'm not married to <code>Weapon</code> being a <code>ForiegnKey</code> - it could certainly be a <code>OneToOneField</code> as well if that makes it easier.</p>
  
  <p>What is the right way for me to do this in Django?</p>