-- urls.py
    (r'^admin/(?P<url>.*)/switch/$', 'project.app.views.switch' ),
    (r'^admin/', include('django.contrib.admin.urls')),

-- app/views.py
def switch(request,url=''):
    from django.db.models import get_model
    if request.user and request.user.is_authenticated() and request.user.is_
staff:
    try:
        app_label,model_name,object_id,field) = url.split('/')
        model = get_model(app_label,model_name)
        object = get_object_or_404( model, pk=object_id )
        setattr(object,field,getattr(object,field)==0)
        object.save()
    except: pass
    return HttpResponseRedirect(request.META.get('HTTP_REFERER','/'))

-- app/models.py
def boolean_switch(field):
    def _f(self):
        v = getattr(self,field.name)
        return '<a href ="%d/%s/switch/"><img src="/media/img/admin/icon
-%s.gif" alt="%d"/></a>'%(self.id,field.name,('no','yes')[v],v)
    _f.short_description = field.verbose_name
    _f.allow_tags = True
    return _f
