Index: django/contrib/admin/options.py
===================================================================
--- django/contrib/admin/options.py	(revision 6822)
+++ django/contrib/admin/options.py	(working copy)
@@ -166,6 +166,11 @@
             kwargs['widget'] = widgets.AdminTimeWidget
             return db_field.formfield(**kwargs)
 
+        # For BooleanFields, use a special widget.
+        if isinstance(db_field, models.BooleanField):
+            kwargs['widget'] = widgets.AdminBooleanSelect
+            return db_field.formfield(**kwargs)
+
         # For FileFields and ImageFields add a link to the current file.
         if isinstance(db_field, models.ImageField) or isinstance(db_field, models.FileField):
             kwargs['widget'] = widgets.AdminFileWidget
Index: django/contrib/admin/widgets.py
===================================================================
--- django/contrib/admin/widgets.py	(revision 6822)
+++ django/contrib/admin/widgets.py	(working copy)
@@ -46,6 +46,22 @@
 
     def __init__(self, attrs={}):
         super(AdminTimeWidget, self).__init__(attrs={'class': 'vTimeField', 'size': '8'})
+
+class AdminBooleanSelect(forms.RadioSelect):
+    def __init__(self, attrs=None):
+        choices = ((u'1', _('Yes')), (u'2', _('No')))
+        super(AdminBooleanSelect, self).__init__(attrs, choices)
+
+    def render(self, name, value, attrs=None, choices=()):
+        try:
+            value = {True: u'1', False: u'2', u'1': u'1', u'2': u'2'}[value]
+        except KeyError:
+            value = u'2'
+        return super(AdminBooleanSelect, self).render(name, value, attrs, choices)
+
+    def value_from_datadict(self, data, files, name):
+        value = data.get(name, None)
+        return {u'1': True, u'2': False, True: True, False: False}.get(value, None)
     
 class AdminSplitDateTime(forms.SplitDateTimeWidget):
     """
