gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 01:01:44 26 4
gpt4 key购买 nike

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com