用户的 Django 管理内联模型

Posted

技术标签:

【中文标题】用户的 Django 管理内联模型【英文标题】:Django admin inline model for User 【发布时间】:2011-11-27 18:01:20 【问题描述】:

我有模型

class Employer(models.Model):
    create_user = models.ForeignKey(User,unique=False,null=True, related_name='%(class)s_user_create')
    update_user = models.ForeignKey(User,unique=False,null=True, related_name='%(class)s_user_update')

当我在 Django 管理面板中查看用户详细信息时,我想列出所有 Employer 对象。

我写过类似的东西

admin.py

class EmployerInline(admin.TabularInline):
    model = Employer

class UserAdmin(admin.ModelAdmin):
    inlines = [
               EmployerInline
    ]

admin.site.register(UserAdmin)

但它给了我'MediaDefiningClass' object is not iterable的错误

如何在我查找用户详细信息时列出由特定用户创建的雇主?

谢谢

【问题讨论】:

【参考方案1】:

您提到的特定错误似乎与您的代码中发生的事情没有任何关系,所以我不确定这一点。但是,这里还有其他错误,因此修复这些错误也可以解决该错误。

首先,您需要在您的EmployerInline 上指定fk_name。在大多数情况下,Django 会自动解析外键,但由于同一模型有两个外键,因此您必须给 Django 一些帮助。

class EmployerInline(admin.TabularInline):
    model = Employer
    fk_name = 'create_user'

其次,您可能只是省略了它,但您必须在注册之前取消注册User。注册时还需要指定型号:

admin.site.unregister(User)
admin.site.register(User, UserAdmin)

【讨论】:

以上是关于用户的 Django 管理内联模型的主要内容,如果未能解决你的问题,请参考以下文章

Django:从内联模型管理员访问父实例

Django 内联模型管理过滤器外部字段

Django 管理员自定义验证 - 至少需要一个内联外键模型

在 Django 管理站点中,如何通过内联访问模型属性?

在管理界面上向 Django 内联对象添加自定义操作

django 1.5 管理员内联额外