1.stark.py
class StarkAdmin(object):
def multi_delete(self,request):
print('all delete')
pk_list=request.POST.getlist('pk')
self.model_class.objects.filter(pk__in=pk_list).delete()
# return HttpResponse('删除成功')
multi_delete.text='批量删除'
def multi_init(self,request):
print('all init')
multi_init.text='批量初始化'
# action_list=[multi_delete,multi_init]
action_list=[]
def get_action_list(self):
val=[]
val.extend(self.action_list)
return val
def get_action_dict(self):
val={}
for item in self.action_list:
val[item.__name__]=item
return val
def list(self, request):
if request.method=='POST':
# print(request.POST)
action_name=request.POST.get('action')
# pk_list=request.POST.getlist('pk')
action_dict=self.get_action_dict()
if action_name not in action_dict:
return HttpResponse('非法请求')
response=getattr(self,action_name)(request)
if response:
return response
#action
action_list=[{'name':func.__name__,'text':func.text} for func in self.get_action_list()]
#list.html
{% if action_list %}
<div class="form-group">
<select class="form-control" name="action">
<option>请选择功能</option>
{% for item in action_list %}
<option value="{{ item.name }}">{{ item.text }}</option>
{% endfor %}
</select>
<input type="submit" value="执行" class="btn btn-primary">
</div>
{% endif %}
自定义方法
#app/stark.py
class ArticleStarkAdmin(StarkAdmin):
def xxx(self,request):
pass
xxx.text = 'fuck u'
action_list = [StarkAdmin.multi_delete,xxx]
效果图: