  
  class TruncTime(TruncBase):
      kind = 'time'
      lookup_name = 'time'
  
      def __init__(self, *args, output_field=None, **kwargs):
          super().__init__(*args, output_field=TimeField(), **kwargs)
  
      def as_sql(self, compiler, connection):
          # Cast to date rather than truncate to date.
          lhs, lhs_params = compiler.compile(self.lhs)
          tzname = timezone.get_current_timezone_name() if settings.USE_TZ else None
 
</s> remove 
    def __init__(self, *args, output_field=None, **kwargs):
        super().__init__(*args, output_field=DateField(), **kwargs)
 </s> add     output_field = DateField() </s> remove 
    def __init__(self, output_field=None, **extra):
        if output_field is None:
            output_field = fields.DateTimeField()
        super().__init__(output_field=output_field, **extra)
 </s> add     output_field = fields.DateTimeField() </s> remove         super().__init__(lhs, self.SUB, rhs, output_field=fields.DurationField())
 </s> add         super().__init__(lhs, self.SUB, rhs)
    output_field = TimeField()
  
  class TruncTime(TruncBase):
      kind = 'time'
      lookup_name = 'time'
    output_field = TimeField()
    output_field = TimeField()
    output_field = TimeField()
  
      def as_sql(self, compiler, connection):
          # Cast to date rather than truncate to date.
          lhs, lhs_params = compiler.compile(self.lhs)
          tzname = timezone.get_current_timezone_name() if settings.USE_TZ else None
keep keep keep keep replace replace replace keep keep keep keep keep
 Fixed #28492 -- Defined default output_field of expressions at the class level.

This wasn't possible when settings were accessed during Field initialization
time as our test suite setup script was triggering imports of expressions
before settings were configured. 
django/db/models/functions/datetime.py