django admin actions 自定义actions view

django1.8  

不多说,上代码

 

#coding=utf-8
from django.contrib import admin
from common.defines import BMOBJ, YAdmin
from models import *
from django.utils.translation import ugettext_lazy as _
from django.contrib import messages
#
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render_to_response
from django.template import RequestContext
from gtwisted.utils import log
from django import forms  

# Register your models here.
def copy_player(modeladmin, request, queryset):  
    form = None  
    log.err("$"*50)
    if 'cancel' in request.POST:  
        modeladmin.message_user(request, u'已取消')  
        log.err("#"*50)
        return  
    elif 'ok' in request.POST:  
        modeladmin.message_user(request, u'已复制')  
        log.err("!"*50)
        return HttpResponseRedirect(request.get_full_path())  
    if not form:  
        try:
            form  = modeladmin.data_src_form(initial={'_selected_action': request.POST.getlist(admin.ACTION_CHECKBOX_NAME)})  
        except Exception,e:
            log.err(e)
    return render_to_response('player_copy.html',  
                                    {'objs': queryset, 'form': form, 
                                     'path':request.get_full_path(),
                                      'action': 'copy_player', 'title': u'复制数据'},  
                                    context_instance=RequestContext(request)  
          )  
  
copy_player.short_description = u'复制'  


class PlayerAdmin(YAdmin):
    list_display = ('id','uid','nickname')
    search_fields = ('uid', 'nickname')
    actions = [copy_player] 
    
    class data_src_form(forms.forms.Form):  
        _selected_action = forms.CharField(widget=forms.MultipleHiddenInput) 

 

player_copy.html内容为:

 ##############################

{% extends "admin/base_site.html" %}

{% block content %}
<form method="post" action="{{path}}">
{% csrf_token %}
{{ form }}
<p>
<input type="hidden" name="action" value="{{ action }}" />
<input type="submit" name="cancel" value="取消" />
<input type="submit" name="ok" value="确定"/>
</p>
</form>
<p>将批量修改以下所有对象</p>
<ul>
{% for obj in objs %}
<li>{{ obj }}</li>
{% endfor %}
</ul>
{% endblock %}

###############################

 

 

 


分享到: 微信 更多