【问题标题】:two admin classes for one model django一个模型 django 的两个管理类
【发布时间】:2014-05-15 16:12:43
【问题描述】:

我需要在 2 个管理类的上下文中使用一个模型。所以,这是我的模型:

ITEM_STATUSES = (
('pending', _('Waiting approval')),
('approved', _('Approved')),
('declined', _('Declined'))
)

class Item(models.Model):
title = models.CharField(max_length=64)
description = models.TextField(blank=True)
...
status = models.CharField(max_length=32, choices=ITEM_STATUSES)
...

我想使用它两次。首先,我想展示所有模型,例如:

class ItemAdmin(admin.ModelAdmin):
  pass

admin.site.register(Item, ItemAdmin)

另外,我想要一个新页面,其中只会显示 status = 'pending' 的模型,如下所示:

class ItemAdminPending(admin.ModelAdmin):
def queryset(self, request):
    qs = super(ItemAdminPending, self).queryset(request)
    return qs.filter(status='pending')

admin.site.register(Item, ItemAdminPending)

但我当然会得到一个错误: AlreadyRegistered:模型Item已经注册

有什么建议吗?希望得到帮助。

【问题讨论】:

    标签: python django django-models django-admin


    【解决方案1】:

    非常接近!你想要的是在你的models.py 中添加一个proxy model

    class ItemPending(Item):
        class Meta:
            proxy = True
    

    然后像这样注册第二个ModelAdmin

    admin.site.register(ItemPending, ItemAdminPending)
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-18
    • 1970-01-01
    • 2013-10-07
    • 2013-10-12
    • 2021-02-11
    • 1970-01-01
    • 2012-04-20
    • 1970-01-01
    相关资源
    最近更新 更多