一个模型django的两个管理类

时间:2014-04-03 17:02:31

标签: python django django-models django-admin

我需要在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)

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

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

1 个答案:

答案 0 :(得分:6)

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

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

然后像这样注册第二个ModelAdmin

admin.site.register(ItemPending, ItemAdminPending)