You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django Admin中展示is_approved=0的Restaurant模型子集数据

在Django Admin中创建仅展示未审核餐厅的独立表格

没错,你确实需要通过自定义ModelAdmin类来实现这个需求,操作起来其实很简单,我给你一步步拆解:

1. 编写自定义ModelAdmin类

在你的应用的admin.py文件里,创建一个专门的ModelAdmin子类,重写get_queryset方法来过滤出is_approved=False的记录。同时你还可以自定义这个Admin页面要展示的字段、搜索功能等:

from django.contrib import admin
from .models import Restaurant

class UnapprovedRestaurantAdmin(admin.ModelAdmin):
    # 定义列表页要显示的字段,按需调整
    list_display = ('rest_owner', 'email_sent', 'is_approved')
    # 可选:添加搜索功能,比如按餐厅所有者的用户名搜索
    search_fields = ('rest_owner__username',)
    
    # 重写queryset,只返回未审核的餐厅
    def get_queryset(self, request):
        # 先获取默认的queryset
        queryset = super().get_queryset(request)
        # 过滤出is_approved为False的记录
        return queryset.filter(is_approved=False)

2. 注册自定义Admin到站点

接下来把这个自定义的Admin注册到Django Admin站点里。如果你的Restaurant模型之前已经注册过默认的Admin,只需要在注册时指定一个独特的name参数,就能在Admin侧边栏生成一个独立的入口:

# 先注册默认的Admin(展示所有餐厅记录)
admin.site.register(Restaurant)
# 再注册自定义的未审核餐厅Admin,name参数避免重复注册冲突
admin.site.register(Restaurant, UnapprovedRestaurantAdmin, name='UnapprovedRestaurants')

配置完成后重启Django服务,进入Admin后台就能看到两个独立的菜单选项:一个是原来的「Restaurants」(展示所有餐厅),另一个是「Unapproved Restaurants」(只展示未审核的餐厅),完全满足你的需求。

内容的提问来源于stack exchange,提问作者gamer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:00:27