python - 一个模型 django 的两个管理类

标签 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)

另外,我想要一个新页面,其中将只显示状态为“待定”的模型,如下所示:

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已经注册

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

最佳答案

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

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

然后像这样注册第二个ModelAdmin:

admin.site.register(ItemPending, ItemAdminPending)

关于python - 一个模型 django 的两个管理类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22844305/

相关文章:

Python PIL -> 居中长文本

Python-如何拆分字符串列表以按原始顺序获得唯一的拆分

python - 如何使用 Pandas 找到指定的字符串匹配过滤模式

python - NoReverseMatch Django 教程 1.8

Django: "AttributeError: type object ' AutoField'没有属性 'rsplit'“将 "DEFAULT_AUTO_FIELD"添加到settings.py后

python - 自定义 unique_together 键名

python - Django:在没有 javascript 的情况下添加内联表单集行

python - 映射而不是for循环

python - 使用reportlab和django框架在一个pdf文件中生成多个二维码

python - Django/Python requirements.txt 总是获取最近的包