def display_table_objs(request,app_name,table_name): #models_module = importlib.import_module('%s.models'%(app_name)) #model_obj = getattr(models_module,table_name) admin_class = king_admin.enabled_admins[app_name][table_name] #admin_class = king_admin.enabled_admins[crm][userprofile] #object_list = admin_class.model.objects.all() object_list,filter_condtions = table_filter(request,admin_class) object_list = table_search(request,admin_class,object_list) object_list,orderby_key = table_sort(request, admin_class, object_list) paginator = Paginator(object_list, admin_class.list_per_page) # Show 25 contacts per page page = request.GET.get('page') try: query_sets = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. query_sets = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. query_sets = paginator.page(paginator.num_pages) return render(request,"king_admin/table_objs.html",{"admin_class":admin_class, "orderby_key":orderby_key, "query_sets":query_sets, "filter_condtions":filter_condtions, "orderby_key":orderby_key, "previous_orderby": request.GET.get("o",''), "search_text":request.GET.get('_q','')})
def display_table(request,app_name,table_name): from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger # admin_class规定了显示的内容,并且还有model属性,所以将admin_class传入前端 admin_class = king_admin.enabled_admins[app_name][table_name] # <!--分页功能> # 得到表的对象的列表,因为 Paginator 第一个参数必须是可迭代的,第二个参数是每页展示的个数 # model_all = admin_class.model.objects.all() models_list,filter_conditions = utils.table_filter(request, admin_class) # 过滤后 models_list, search_key = utils.table_search(request, models_list, admin_class) # 搜索后 models_list, orderby_key = utils.table_sort(request, models_list) # 排序后 # 传入 list_per_page 作为每页的数据量,保证检索前与检索后展示相同的数据量 paginator = Paginator(models_list,admin_class.list_per_page) current_page = request.GET.get('page') try: # paginator.page()得到的是一页的对象列表,所以前端不用再对 # admin_class.model.objects.all()进行循环,而是循环posts posts = paginator.page(current_page) # 防止用户输入非法字符 except PageNotAnInteger: posts = paginator.page(1) except EmptyPage: posts = paginator.page(paginator.num_pages) return render(request,'king_admin/table_obj.html',{'admin_class':admin_class, 'posts':posts, 'filter_conditions':filter_conditions, 'orderby_key':orderby_key, 'search_key':search_key, 'request':request})
def display_table_objs(request, app_name, table_name): #传进来的CRM_test、userprofile # print("-->", app_name, table_name) admin_class = king_admin.enabled_admins[app_name][ table_name] #根据CRM_test、userprofile取到admin_class # contact_list = admin_class.model.objects.all() contact_list, filter_conditions = table_filter(request, admin_class) #过滤后的结果 contact_list = table_search(request, admin_class, contact_list) contact_list, orderby_key = table_sort(request, admin_class, contact_list) #排序后的结果 print(contact_list) paginator = Paginator( contact_list, admin_class.list_per_page) # Show list_per_page contacts per page page = request.GET.get('page') contacts = paginator.get_page(page) # print(admin_class.list_filters) return render( request, "king_admin/table_obj.html", { "admin_class": admin_class, "contacts": contacts, "filter_conditions": filter_conditions, "orderby_key": orderby_key, "previous_orderby_page": request.GET.get("o", ''), "search_text": request.GET.get("_q", '') })
def display_table_objs(request, app_name, model_name): # 模板中的传的两个参数在这里接收 admin_class = king_admin.enabled_admins[app_name][model_name] # objects = admin_class.model.objects.all() if request.method == 'POST': print(request.POST) admin_action = request.POST.get('action') selected_ids = request.POST.get('selected_ids') if selected_ids: selected_objs = admin_class.model.objects.filter( id__in=selected_ids.split(',')) else: raise KeyError('No object got selected!') if hasattr(admin_class, admin_action): action_func = getattr(admin_class, admin_action) request._admin_action = admin_action return action_func(admin_class, request, selected_objs) objects, filter_conditions = utils.table_filter(request, admin_class) objects = utils.table_search(request, admin_class, objects) objects, orderby_key = utils.table_sort(request, objects) paginator = Paginator(objects, king_admin.BaseAdmin.list_per_page) page = request.GET.get('page') query_sets = paginator.get_page(page) return render( request, 'king_admin/table_objs.html', { 'admin_class': admin_class, 'query_sets': query_sets, 'filter_conditions': filter_conditions, 'orderby_key': orderby_key, 'previous_orderby': request.GET.get('o', ''), 'search_text': request.GET.get('_q', '') })
def display_table_objs(request, app_name, table_name): print("---->", app_name, table_name) # models_module = importlib.import_module('%s.models'%(app_name)) # model_obj = getattr(models_module,table_name) admin_class = king_admin.enabled_admins[app_name][table_name] # object_list = admin_class.model.objects.all() object_list, filter_conditions = table_filter(request, admin_class) object_list = table_search(request, admin_class, object_list) object_list, orderby_key = table_sort(request, admin_class, object_list) # print("orderby key",orderby_key) paginator = Paginator( object_list, admin_class.list_per_page) # Show 25 contacts per page page = request.GET.get('page') query_sets = paginator.get_page(page) return render( request, "king_admin/table_objs.html", { "admin_class": admin_class, "query_sets": query_sets, "filter_conditions": filter_conditions, "orderby_key": orderby_key, "previous_orderby": request.GET.get("o", ''), "search_text": request.GET.get('_q', '') })
def display_table_objs(request,app_name,table_name): admin_class = king_admin.enabled_admins[app_name][table_name] object_list, filter_condtions = table_filter(request, admin_class)#做过滤 object_list = table_search(request,admin_class,object_list)#做搜索 object_list,orderby_key = table_sort(request,admin_class,object_list)#做排序 paginator = Paginator(object_list, admin_class.list_per_page) # Show 25 contacts per page page = request.GET.get("page") try: query_sets = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. query_sets = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. query_sets = paginator.page(paginator.num_pages) return render(request, "king_admin/table_objs.html", {"admin_class": admin_class, "query_sets": query_sets, "filter_condtions": filter_condtions, "orderby_key":orderby_key, "previous_orderby":request.GET.get('o',''), "search_text":request.GET.get('_q',''),})
def display_table_objs(request, app_name, table_name): '''展示某一张表的数据''' # print("--->", app_name, table_name) # models_module = importlib.import_module('%s.models'%app_name) # import time # time.sleep(5) admin_class = king_admin.enabled_admins[app_name][table_name] if request.method == "POST": # action 来了 print(request.POST) selected_ids = request.POST.get("selected_ids") if selected_ids: selected_objs = admin_class.model.objects.filter(id__in=selected_ids.split(",")) else: raise KeyError("No selected object id") print(selected_objs) action = request.POST.get("action") if hasattr(admin_class, action): action_func = getattr(admin_class, action) request._admin_action = action # 给king_admin 中的删除action return action_func(admin_class, request, selected_objs) return HttpResponse("action submit") # object_list = admin_class.model.objects.all() object_list, filer_condition = utils.table_filter(request, admin_class) # 获取过滤数据 object_list = utils.table_search(request, admin_class, object_list) object_list, orderby_key = utils.table_sort(request, admin_class, object_list) # 获取排序数据 paginator = Paginator(object_list, admin_class.list_per_page) # Show 25 contacts per page page = request.GET.get('page') # 获取page number query_sets = paginator.get_page(page) # 同时具有querysets 和page 的方法 return render(request, "king_admin/table_objs.html", {'admin_class': admin_class, "query_sets": query_sets, "filer_condition": filer_condition, "orderby_key": orderby_key, "previous_orderby": request.GET.get("o", ""), "search_text": request.GET.get("_q", ""), })
def display_table_objs(request, app_name, table_name): #1、 admin_class = king_admin.enabled_admins[app_name][table_name] #从king_admin里面的字典enabled_admins里面取 # object_list = admin_class.model.objects.all() if request.method == "POST": # 删除会有两次post,两次post都是新的post,所以每次post都应该带上选中的id和相应的动作 # 第一次是展示页面的form表单的post提交,即批量操作的action 来了,到delete页面,展示需要删哪些内容, # 点确认以后,再来一个POST,是删除页面的form表单的确认删除的post,才删除,删除后返回table展示页面 # print(request.POST) selected_ids = request.POST.get("selected_ids") # 拿到选中的id action = request.POST.get("action") # 拿到动作名称 if selected_ids: selected_objs = admin_class.model.objects.filter( id__in=selected_ids.split(',')) else: raise KeyError("No object selected.") if hasattr(admin_class, action): action_func = getattr(admin_class, action) request._admin_action = action # 将这个action强制放到request里面去 return action_func(admin_class, request, selected_objs) # 跳转到执行动作的函数,即delete_selected_objs(),但返回的只是delete页面的内容!!! # 2、过滤字段 object_list, filter_conditions = table_filter(request, admin_class) # print('object_list',object_list) # print('filter_conditions',filter_conditions) #3、搜索 object_list = table_search(request, admin_class, object_list) #4、排序 object_list, orderby_key = table_sort(request, admin_class, object_list) #排序后的结果 #5、分页 # 分页直接调用Django自带的Paginator #https://docs.djangoproject.com/en/1.10/topics/pagination/ paginator = Paginator(object_list, admin_class.list_per_page) page = request.GET.get('page') try: query_sets = paginator.page(page) except PageNotAnInteger: query_sets = paginator.page(1) #非整数时,返回第一页 except EmptyPage: query_sets = paginator.page(paginator.num_pages) #页数小于1或大于最大页数时,返回最大页 return render( request, 'king_admin/table_objs.html', { 'admin_class': admin_class, 'query_sets': query_sets, 'filter_condtions': filter_conditions, 'search_text': request.GET.get("_q", ""), 'orderby_key': orderby_key, })
def display_table_objs(request, app_name, table_name): print("-->", app_name, table_name) #models_module = importlib.import_module('%s.models'%(app_name)) #model_obj = getattr(models_module,table_name) admin_class = king_admin.enabled_admins[app_name][table_name] #admin_class = king_admin.enabled_admins[crm][userprofile] if request.method == "POST": #action 来了 print(request.POST) selected_ids = request.POST.get("selected_ids") action = request.POST.get("action") if selected_ids: selected_objs = admin_class.model.objects.filter( id__in=selected_ids.split(',')) else: raise KeyError("No object selected.") if hasattr(admin_class, action): action_func = getattr(admin_class, action) request._admin_action = action return action_func(admin_class, request, selected_objs) #object_list = admin_class.model.objects.all() object_list, filter_condtions = table_filter(request, admin_class) #过滤后的结果 object_list = table_search(request, admin_class, object_list) object_list, orderby_key = table_sort(request, admin_class, object_list) #排序后的结果 print("orderby key ", orderby_key) paginator = Paginator( object_list, admin_class.list_per_page) # Show 25 contacts per page page = request.GET.get('page') try: query_sets = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. query_sets = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. query_sets = paginator.page(paginator.num_pages) return render( request, "king_admin/table_objs.html", { "admin_class": admin_class, "query_sets": query_sets, "filter_condtions": filter_condtions, "orderby_key": orderby_key, "previous_orderby": request.GET.get("o", ''), "search_text": request.GET.get('_q', '') })
def display_table_objs(request, app_name, table_name): #print ('-------------->',app_name,table_name) admin_class = king_admin.enabled_admins[app_name][table_name] # models_module = importlib.import_module('%s.model'%(app_name)) # model_obj = getattr(models_module,table_name) #object_list = admin_class.model.objects.all() object_list, filter_conditions = table_filter(request, admin_class) #过滤都得结果 object_list = table_seach(request, admin_class, object_list) object_list, orderby_key = table_sort(request, admin_class, object_list) #排序后的结果 paginator = Paginator( object_list, admin_class.list_per_page) # Show 25 contacts per pag # def get_page(self, number): # """ # Return a valid page, even if the page argument isn't a number or isn't # in range. # """ # try: # number = self.validate_number(number) # except PageNotAnInteger: # number = 1 # except EmptyPage: # number = self.num_pages # return self.page(number) page = request.GET.get('page') query_sets = paginator.get_page(page) # try: # query_sets = paginator.get_page(page) # except PageNotAnInteger: # query_sets = paginator.get_page(1) # except EmptyPage: # query_sets = paginator.get_page(paginator.num_pages) #return render(request, 'list.html', {'contacts': contacts}) admin_class = king_admin.enabled_admins[app_name][table_name] return render( request, 'king_admin/table_objs.html', { "admin_class": admin_class, "query_sets": query_sets, 'filter_conditions': filter_conditions, 'orderby_key': orderby_key, 'previous_orderby': request.GET.get('o') or '', "search_text": request.GET.get('_q', '') })
def display_table_objs(request, app, table): """ :param request: :return: """ admin_class = king_admin.enabled_admins[app][table] if request.method == "GET": model = admin_class.model object_list, filter_conditions = table_filter(request, admin_class) # 过滤 object_list, search_key = table_search(request, admin_class, object_list) order_key = "" object_list, order_key = table_sort(request, object_list) # 排序 paginator = Paginator(object_list, admin_class.list_per_page) page = request.GET.get('page') try: query_sets = paginator.page(page) except PageNotAnInteger: # 不是int的值,显示第一页 query_sets = paginator.page(1) except EmptyPage: # 超过限制,显示最后一页 query_sets = paginator.page(paginator.num_pages) previous_order = request.GET.get('order', "") return render(request, 'king_admin/table_objs.html', locals()) elif request.method == "POST": # action selected_ids = request.POST.get("selected_ids", []) action = request.POST.get("action", None) if selected_ids: selected_objs = admin_class.model.objects.filter( id__in=selected_ids.split(',')) else: raise KeyError("no object selected") if hasattr(admin_class, action): action_func = getattr(admin_class, action) request._admin_action = action return action_func(admin_class, request, selected_objs) else: pass
def display_table_objs(request, app_name, table_name): admin_class = king_admin.enabled_admins[app_name][table_name] if request.method == "POST": #action select_ids = request.POST.get("selected_ids") action = request.POST.get("action") if select_ids: select_objs = admin_class.model.objects.filter( id__in=select_ids.split(',')) else: return redirect(("/king_admin/%s/%s/" % (app_name, table_name))) if hasattr(admin_class, action): action_func = getattr(admin_class, action) request._admin_action = action return action_func(admin_class, request, select_objs) #!!!非常重要的三步 object_list, filter_conditions = table_filter(request, admin_class) #过滤 object_list = table_search(request, admin_class, object_list) #搜索 object_list, orderby_key = table_sort(request, admin_class, object_list) #排序 #分页功能 paginator = Paginator( object_list, admin_class.list_per_page) # Show 20 contacts per page page = request.GET.get('page') try: query_sets = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. query_sets = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. query_sets = paginator.page(paginator.num_pages) return render( request, "king_admin/table_objs.html", { "admin_class": admin_class, "query_sets": query_sets, "filter_conditions": filter_conditions, "orderby_key": orderby_key, "previous_key": request.GET.get("o", ''), "search_text": request.GET.get("search", ''), }, )
def display_table_objs(req,app_name,table_name): print('-->',app_name,table_name) print(type(app_name),type(table_name)) print(kingadmin.enabled_admins) #admin_class 根据这个类,获取显示条件 还操作.model下的数据 admin_class = kingadmin.enabled_admins[app_name][table_name] #action post请求 print(req.method) if req.method == "POST": print(req.POST) selected_ids = req.POST.get('selected_ids') action = req.POST.get('action') if selected_ids: selected_objs = admin_class.model.objects.filter(id__in=selected_ids.split(',')) else: raise KeyError('No object selected.') if hasattr(admin_class,action): action_func = getattr(admin_class,action) req._admin_action = action return action_func(admin_class(),req,selected_objs) # object_list = admin_class.model.objects.all() object_list,filter_condtions = table_filter(req,admin_class) #过滤数据 object_list = table_search(req,admin_class,object_list) #搜索查询 object_list,order_key = table_sort(req, object_list) #排序数据 paginator = Paginator(object_list, admin_class.list_per_page) # Show 25 contacts per page page = req.GET.get('page') try: query_sets = paginator.page(page) except PageNotAnInteger: query_sets = paginator.page(1) except EmptyPage: query_sets = paginator.page(paginator.num_pages) print('enter filter') return render(req,'king_admin/table_objs.html',{'admin_class':admin_class, 'query_sets': query_sets, 'filter_condtions':filter_condtions, 'order_key':order_key, 'previous_order_key':req.GET.get('o',''), 'search_text':req.GET.get('_q','')})
def display_table_objs(request, app_name, table_name): # model_module = importlib.import_module("%s.models"%(app_name)) # model_obj = getattr(model_module,table_name) #print(model_obj.__dict__) print("-->", app_name, table_name) admin_class = king_admin.enabled_admins[app_name][table_name] if request.method == "POST": ids_list = request.POST.get("selected_ids").split(",") #print(ids_list) action = request.POST.get("action") querySets = admin_class.model.objects.filter( id__in=[int(id) for id in ids_list]) if hasattr(admin_class, action): action_func = getattr(admin_class, action) request._admin_action = action return action_func(admin_class, request, querySets) object_list, filter_conditions = table_filter(request, admin_class) #过滤后的结果 object_list = table_search(request, admin_class, object_list) #关键字查询结果 object_list, orderby_key = table_sort(request, admin_class, object_list) #排序后的查询集 paginator = Paginator(object_list, admin_class.list_per_page) #获取分页对象 page = request.GET.get("page") #获取当前或者请求页面的页码 try: query_sets = paginator.page(page) #获取这一页被分配的数据 except PageNotAnInteger: # If page is not an integer, deliver first page. query_sets = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. query_sets = paginator.page(paginator.num_pages) #num_pages是总页数 return render( request, "king_admin/table_objs.html", { "admin_class": admin_class, "filter_conditions": filter_conditions, 'query_sets': query_sets, "orderby_key": orderby_key, "search_key": request.GET.get("_q", "") })
def display_table_objs(request, app_name, table_name): # model_module = importlib.import_module('%s.models' %(app_name)) # model_obj = getattr(model_module, table_name) admin_class = king_admin.enabled_admins[app_name][table_name] if request.method == "POST": selected_ids = request.POST.get('selected_ids') action = request.POST.get('action') if selected_ids: selected_objs = admin_class.model.objects.filter( id__in=selected_ids.split(',')) else: raise KeyError("No object selected.") if hasattr(admin_class, action): request._admin_action = action action_func = getattr(admin_class, action) return action_func(admin_class, request, selected_objs) #object_list = admin_class.model.objects.all() object_list, filter_condition = table_filter(request, admin_class) object_list = table_search(request, admin_class, object_list) object_list, orderby_key = table_sort(request, admin_class, object_list) paginator = Paginator(object_list, admin_class.list_per_page) page = request.GET.get('page') try: query_sets = paginator.page(page) except PageNotAnInteger: query_sets = paginator.page(1) except EmptyPage: query_sets = paginator.page(paginator.num_pages) return render( request, 'king_admin/table_objs.html', { 'admin_class': admin_class, 'query_sets': query_sets, 'filter_condition': filter_condition, 'orderby_key': orderby_key, 'previous_orderby': request.GET.get('o', ''), 'search_text': request.GET.get('_q', ''), 'app_name': app_name, 'table_name': table_name })
def display_table_objs(request, app_name, table_name): admin_class = king_admin.enabled_admins[app_name][table_name] #post请求执行action操作 if request.method == 'POST': selected_ids = request.POST.get('selected_ids') action_name = request.POST.get('action') if selected_ids: selected_objs = admin_class.model.objects.filter( id__in=selected_ids.split(',')) else: raise KeyError('没有数据') if hasattr(admin_class, action_name): action_func = getattr(admin_class, action_name) request._action = action_name return action_func(admin_class, request, selected_objs) #有后端查询出结果集,并对其进行分页操作 object_list, filter_conditions = table_filter(request, admin_class) #搜索 object_list = table_search(request, admin_class, object_list) #先过滤,在排序 object_list, orderby_key = table_sort(request, object_list) paginator = Paginator(object_list, admin_class.list_per_page) page = request.GET.get('page') try: objects = paginator.page(page) except PageNotAnInteger: objects = paginator.page(1) except EmptyPage: objects = paginator.page(paginator.num_pages) return render( request, 'king_admin/table_objs.html', { 'admin_class': admin_class, 'query_sets': objects, 'filter_conditions': filter_conditions, 'orderby_key': orderby_key, 'previous_orderby': request.GET.get('o') or '', 'search_text': request.GET.get('_q') or '' })
def table_contents(req, app_name, table_name): conf = {} table_admin = king_admin.enabled_admin[app_name][table_name] object_list, filter_conditions = utils.table_filter(req, table_admin) ##过滤后的结果 object_list, search_key = utils.search_for(req, object_list, table_admin) object_list, order_by = utils.table_sort(req, table_admin, object_list) ##排序后的结果 old_order_by = req.GET.get('o', '') # 记录当前排序状态 conf['order_by'] = order_by ##加负号或者去掉负号的过滤值 conf['old_order_by'] = old_order_by ###上一次的过滤值 conf['app'] = app_name conf['table'] = table_name conf['search_key'] = search_key ##搜索框保留值 # conf['current_url'] = req.path # print(req.path) paginator = Paginator(object_list, table_admin.list_per_page) page = req.GET.get('page') try: content_set = paginator.page(page) except PageNotAnInteger: content_set = paginator.page(1) except EmptyPage: content_set = paginator.page(paginator.num_pages) return render( req, 'king_admin/table_contents.html', { 'admin': table_admin, 'content_set': content_set, 'filter_conditions': filter_conditions, 'conf': conf, }, )
def display_table_objs(req, app_name, table_name): '''提供过滤后的数据''' admin_class = king_admin.enabled_admin[app_name][table_name] #action全选编辑选项,最后把selected_objs传到kingadmin··········· if req.method == 'POST': #action来了,tables页面没有其他的post提交。 selected_ids = req.POST.get('selected_ids') action = req.POST.get('action') if selected_ids: #是个字符串['22,21,20'],变成列表 selected_objs = admin_class.model.objects.filter( id__in=selected_ids.split(',')) else: raise KeyError('No objeect selected') if hasattr(admin_class, action): #判断是否有action方法 action_func = getattr(admin_class, action) req._admin_action = action #为第二次post确认删除提交准备的action,,,然后由king_admin传到前端的隐藏input #传到king_admin的数据 return action_func(admin_class, req, selected_objs) queryset = admin_class.model.objects.all( ) #<QuerySet [<Customer: 23423451>, <Customer: 54634451>, <Customer: 234234234>]> queryset, filter_conditions = get_filter_result(req, queryset) #过滤后的结果 queryset = table_search(req, admin_class, queryset) queryset, orderby_key = table_sort(req, queryset) admin_class.filter_conditions = filter_conditions #·······分页······ paginator = Paginator(queryset, 3) # Show num contacts per page page = req.GET.get('_page') #拿第几页 queryset = paginator.get_page(page) #这个页码的内容 return render( req, 'king_admin/table_objs.html', { "queryset": queryset, 'admin_class': admin_class, 'orderby_key': orderby_key, 'previous_orderby': req.GET.get('o', ''), 'search_text': req.GET.get('_q', '') })
def display_table_obj(request, app_name, table_name): print('display--->', app_name, table_name) # model_module=importlib.import_module('%s.models'%app_name) # model_obj=getattr(model_module,table_name) admin_class = king_admin.enabled_admin[app_name][table_name] if request.method == 'POST': print(request.POST) print(request.POST.get('selected_ids')) print(request.POST.get('action')) print(request.POST.get('selected_obj')) selected_o = request.POST.get('selected_obj') selected_action = request.POST.get('action') selected_ids = request.POST.get('selected_ids') if selected_ids and selected_action: ids = selected_ids.split(',') selected_objs = admin_class.model.objects.filter(id__in=ids) # print(selected_objs) func = getattr(admin_class, selected_action) return func(admin_class, request, selected_objs) elif selected_o and selected_action: ids = selected_o.strip() ids = ids.split(' ') selected_objs = admin_class.model.objects.filter(id__in=ids) print(selected_objs) func = getattr(admin_class, selected_action) return func(admin_class, request, selected_objs) print('sadfsdfsd') else: print('------no selected or action') object_list, filter_condtions = table_filter(request, admin_class) # print('object________',admin_class.model.objects.all()) object_list = table_search(request, admin_class, object_list) object_list, orderby_key = table_sort(request, admin_class, object_list) #排序后的结果 # print('2', object_list,filter_condtions) paginator = Paginator( object_list, admin_class.list_per_page) # Show 25 contacts per page page = request.GET.get('page') try: query_sets = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. query_sets = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. query_sets = paginator.page(paginator.num_pages) return render( request, 'king_admin/table_objs.html', { 'admin_class': admin_class, 'filter_condtions': filter_condtions, 'query_sets': query_sets, "previous_orderby": request.GET.get("o", ''), "orderby_key": orderby_key, "search_text": request.GET.get('_q', '') })
def display_table_objs(request, app_name, table_name): print("-->", app_name, table_name) #models_module = importlib.import_module('%s.models'%(app_name)) #model_obj = getattr(models_module,table_name) admin_class = king_admin.enable_admins[app_name][table_name] #admin_class = king_admin.enabled_admins[crm][userprofile] if request.method == "POST": print("操作 action", request.POST.get("action")) selected_ids = request.POST.get("selected_ids") if selected_ids: selected_objs = admin_class.model.objects.filter( id__in=selected_ids.split(",")) else: raise KeyError("No object selected") action = request.POST.get("action") if hasattr(admin_class, action): action_func = getattr(admin_class, action) request._admin_action = action return action_func(admin_class, request, selected_objs) #object_list = admin_class.model.objects.all() object_list, filter_condtions = table_filter(request, admin_class) object_list = table_search(request, admin_class, object_list) object_list, orderby_key = table_sort(request, object_list) # print("object:",object_list) paginator = Paginator( object_list, admin_class.list_per_page) # Show 25 contacts per page page = request.GET.get('page') # print("PAGE:",page) try: query_sets = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. query_sets = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. query_sets = paginator.page(paginator.num_pages) # print("views.filter_condtions:",filter_condtions) # print(222222222222222) # #print(list(query_sets)[0]) # # prn_obj(list(query_sets)[0]) # # print(query_sets.has_previous) # print("222222222222222222222222222222",query_sets.paginator.page_range,"333333333333333333333333333") return render( request, "king_admin/table_objs.html", { "admin_class": admin_class, "query_sets": query_sets, "filter_condtions": filter_condtions, "orderby_key": orderby_key, "previous_orderby": request.GET.get("o") or "", "search_q": request.GET.get("_q") or "", "selectdate": request.GET.get("date") or "" }, )
def display_table_objs(request, app_name, table_name): print("-->", app_name, table_name) # model_module = importlib.import_module('%s.models' % (app_name)) # model_obj = getattr(model_module, table_name) admin_class = king_admin.enabled_admin[app_name][table_name] # 获取数据的主入口 if request.method == "POST": # action来啦 selected_ids = request.POST.get("selected_ids") action = request.POST.get("action") if selected_ids: selected_objs = admin_class.model.objects.filter( id__in=selected_ids.split(',')) else: return redirect(request.path) if hasattr(admin_class, action): action_func = getattr(admin_class, action) request._admin_action = action return action_func(admin_class, request, selected_objs) # object_list = admin_class.model.objects.all() object_list, filter_condtions = table_filter(request, admin_class) # 过滤后的结果 # request_url = '&' + str(filter_condtions).replace('\'', '').replace('{', '').replace('}', '').replace(':', '=') \ # .replace(',', '&').replace(' ', '') filter_url = request_url(request) object_list, search_key = table_search(request, admin_class, object_list) # 搜索的结果 object_list, orderby_key = table_sort(request, admin_class, object_list) # 排序后的结果 paginator = Paginator(object_list, admin_class.list_per_page) page = request.GET.get('page') try: query_sets = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. query_sets = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. query_sets = paginator.page(paginator.num_pages) from king_admin.king_admin import CustomerAdmin return render( request, "admin/table_obj.html", { "admin_class": admin_class, "query_sets": query_sets, "filter_condtions": filter_condtions, "object_list_count": object_list.count(), "qq_search": admin_class.model._meta.object_name, "orderby_key": orderby_key, "previous_orderby": request.GET.get('o', ''), "search_key": search_key, "search_by": CustomerAdmin.search_fields, "filter_url": filter_url })
def display_table_objs(request,app_name,table_name): # print("-->",app_name,table_name) # models_module = importlib.import_module('%s.models' %(app_name)) # model_obj = getattr(models_module,table_name) # 获取自定义的admin_class admin_class = king_admin.enabled_admins[app_name][table_name] # admin_class = king_admin.enabled_admins[crm][userprofile] if request.method == 'POST': # action来了 # with open('1.html','at', encoding="utf-8") as f: # print(request.POST,file=f) # 获取提交的数据 selected_ids = request.POST.get("selected_ids") action = request.POST.get("action") # 后台判断 if selected_ids: selected_objs = admin_class.model.objects.filter(id__in=selected_ids.split(',')) else: raise KeyError("No object selected.") if hasattr(admin_class,action): action_func = getattr(admin_class,action) # 将action存储在请求体中便于调用 request._admin_action = action return action_func(admin_class,request,selected_objs) # 分页处理 # 1.分页对象参数构建:对象列表,每页显示数量 # query_set_list = admin_class.model.objects.all() # 此处顺序不可乱,搜索是在过滤的基础上建立的 # 排序又是在过滤和搜索的基础上建立的 # 延伸===》添加过滤条件 query_set_list, filter_conditions = utils.table_filter(request, admin_class) # 过滤后的结果 # 延伸===》添加搜索功能 query_set_list, search_text = utils.table_search(request, admin_class, query_set_list) # 延伸===》添加排序功能 query_set_list, order_by_text = utils.table_sort(request, admin_class, query_set_list) # 排序后的结果 # print('order_by_text', order_by_text) # 2.分页对象创建 paginator = Paginator(query_set_list, admin_class.list_per_page) # print('admin_class.list_per_page:', admin_class.list_per_page) # print(paginator.count) # print(paginator.num_pages) # print(paginator.page_range) # 3.获取前端点击的页面数值 get_page = request.GET.get('page',1) # get_page = int(request.GET.get('page',1)) # 4.页面异常处理 try: # 直接获取该页内容 query_set = paginator.page(get_page) except PageNotAnInteger: # 不是整数值,跳转到首页 query_set = paginator.page(1) except EmptyPage: # 超出范围,跳转到最后一页 query_set = paginator.page(paginator.num_pages) return render(request, 'king_admin/table_objs.html', {'admin_class': admin_class, 'query_set': query_set, 'filter_conditions': filter_conditions, 'search_text': search_text, # 'order_by_text':request.GET.get("o",''), 'order_by_text':order_by_text, })