code: def prepare_value(self, value):
          
          if value is None and self.required:
              choices =list(self.choices)
              if len(choices) == 1:
                  value = choices[0][0]
          return super(TemplateChoiceField, self).prepare_value(value)
docs: To avoid evaluating the lazysorted callable more than necessary to
          establish a potential initial value for the field, we do it here.
  
          If there's
          - only one template choice, and
          - the field is required, and
          - there's no prior initial set (either by being bound or by being set
            higher up the stack
          then forcibly select the only "good" value as the default.