对于我的Django CMS管理,我想防止它将一个特定的对象返回到CMS。做这件事最好的方法是什么?
我想做这样的事
class MyModuleAdmin(admin.ModelAdmin):
list_display = ['name']
list_filter = ('my_module__name__is_not=moduleidontwant',)
发布于 2022-11-25 03:54:35
您可以简单地重载get_queryset
管理功能并筛选出不想要的项:
class MyModuleAdmin(admin.ModelAdmin):
list_display = ['name']
def get_queryset(self, request):
queryset = super(MyModuleAdmin, self).get_queryset(request)
return queryset.exclude(name='moduleidontwant')
发布于 2022-11-25 04:34:54
# custom_filters.py
from django.contrib.admin import SimpleListFilter
class testFilter(SimpleListFilter):
""" This filter is being used in django admin panel in specified model."""
title = 'Title of you field'
parameter_name = 'field_name'
def queryset(self, request, queryset):
if not self.value():
return queryset
else:
return queryset.filter(my_module__name__is_not='moduleidontwant') #add your filter here.
将此testFilter添加到list_filter
中的admin.py文件中。
# admin.py
from django.contrib import admin
from .models import *
from .custom_filters import testFilter
class MyModuleAdmin(admin.ModelAdmin):
list_display = ['name']
list_filter = (testFilter)
您可以使用此引用,以防您陷入https://www.dothedev.com/blog/django-admin-list_filter/之间。
https://stackoverflow.com/questions/74571953
复制相似问题