基于simpleui的高级搜索框
效果展示

动态识别每个模型的字段类型,去除了外键搜索,可设置指定的字段和排除字段
当前功能
# -*- encoding: utf-8 -*-
from django.contrib import admin
from apps.users.models import User
from django.db.models import Q
from simpleui.admin import AjaxAdmin
from django.http import HttpRequest, JsonResponse
class BaseAdmin(AjaxAdmin, admin.ModelAdmin):
'''
全局模型类
高级搜索:async_advanced_search
清除搜索:async_clear_search
批量修改:async_querysets_update
批量导入:
批量导出:
等功能
def get_queryset(self, request):
queryset = super().get_queryset(request)
filter_data = request.session.get('advanced_search')
if filter_data and self.model._meta.model_name == filter_data['model']:
queryset = queryset.filter(**filter_data['data'])
return queryset
def get_actions(self, request):
actions = super().get_actions(request)
actions['async_advanced_search'] = (
# (function, name, short_description)
self.async_advanced_search, 'async_advanced_search', '高级搜索'
)
actions['async_clear_search'] = (
# (function, name, short_description)
self.async_clear_search, 'async_clear_search', '清除搜索'
)
actions['async_querysets_update'] = (
# (function, name, short_description)
self.async_querysets_update, 'async_querysets_update', '批量更新'
)
return actions
由于使用的是session保存搜索条件,因此需要对model_name进行判断,防止其他模型没有该字段报错,同时无法通过页面内的重置按钮重置搜索条件,需另外编写一个重置按钮。

浙公网安备 33010602011771号