diff --git a/django/django/db/models/fields/__init__.py b/django/django/db/models/fields/__init__.py
index afa1c13..fc5c968 100644
--- a/django/django/db/models/fields/__init__.py
+++ b/django/django/db/models/fields/__init__.py
@@ -393,7 +393,11 @@ class BooleanField(Field):
         return bool(value)
 
     def formfield(self, **kwargs):
-        defaults = {'form_class': forms.BooleanField}
+        if self.choices:
+            include_blank = self.null or not (self.has_default() or 'initial' in kwargs)
+            defaults = {'choices': self.get_choices(include_blank=include_blank)}
+        else:
+            defaults = {'form_class': forms.BooleanField}
         defaults.update(kwargs)
         return super(BooleanField, self).formfield(**defaults)
 
