-- urls.py (r'^admin/(?P.*)/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 '%d'%(self.id,field.name,('no','yes')[v],v) _f.short_description = field.verbose_name _f.allow_tags = True return _f