      return not (v is False or v is None or v == '')
  
  
  class CheckboxInput(Widget):
      def __init__(self, attrs=None, check_test=None):
          super(CheckboxInput, self).__init__(attrs)
          # check_test is a callable that takes a value and returns True
          # if the checkbox should be checked for that value.
          self.check_test = boolean_check if check_test is None else check_test
  
 
</s> remove                 fields = '__all__'
 </s> add                 fields = ('title', 'date_published', 'mode', 'category') </s> remove         form = DerivedBookForm({'title': 'Other', 'author': self.writer.pk, 'isbn': isbn})
 </s> add         form = DerivedBookForm({
            'title': 'Other', 'author': self.writer.pk, 'isbn': isbn,
            'suffix1': '1', 'suffix2': '2',
        })
    # Don't use model field defaults for fields that aren't in POST data,
    # because checkboxes don't appear in POST data if not checked.
    dont_use_model_field_default_for_empty_data = True

      return not (v is False or v is None or v == '')
  
  
  class CheckboxInput(Widget):
    # Don't use model field defaults for fields that aren't in POST data,
    # because checkboxes don't appear in POST data if not checked.
    dont_use_model_field_default_for_empty_data = True

      def __init__(self, attrs=None, check_test=None):
          super(CheckboxInput, self).__init__(attrs)
          # check_test is a callable that takes a value and returns True
          # if the checkbox should be checked for that value.
          self.check_test = boolean_check if check_test is None else check_test
  
keep keep keep add keep keep keep keep keep keep
 Fixed #27039 -- Fixed empty data fallback to model field default in model forms. 
django/forms/widgets.py