代码之家  ›  专栏  ›  技术社区  ›  bluepnume

Django:如何在列表显示中包含内联模型字段?

  •  3
  • bluepnume  · 技术社区  · 16 年前

    我试图扩展django的contrib.auth用户模型,使用一个内联的“profile”模型来包含额外的字段。

    from django.contrib import admin
    from django.contrib.auth.models import User
    from django.contrib.auth.admin import UserAdmin
    
    class Profile(models.Model):
    
      user = models.ForeignKey(User, unique=True, related_name='profile')
      avatar = '/images/avatar.png'
      nickname = 'Renz'
    
    class UserProfileInline(admin.StackedInline):
    
      model = Profile
    
    class UserProfileAdmin(UserAdmin):
    
      inlines = (UserProfileInline,)
    
    admin.site.unregister(User)
    admin.site.register(User, UserProfileAdmin)
    

    这对于管理“更改用户”页面来说很好,但是我找不到在列表显示中添加内联模型字段的方法。只需在列表显示中指定配置文件字段的名称,就会出错:

    userprofileadmin.list_display[4],“avatar”不是可调用的或“userprofileadmin”的属性,或在模型“user”中找到。

    我可以创建一个callable,它在profile表中查找用户并返回相关字段,但这使我无法按内联字段对列表视图进行排序,这是我真正需要做的。

    有什么建议吗?

    1 回复  |  直到 16 年前
        1
  •  7
  •   Daniel Roseman    16 年前

    您提到了唯一的解决方案——创建一个可调用的。目前没有其他方法可以做到这一点,是的,这意味着您不能按该列排序。