          from django.db import models
          if isinstance(sender, models.Model) or sender is None:
              # Skip lazy_model_operation to get a return value for disconnect()
              return partial_method(sender)
          apps = apps or models.base.Options.default_apps
          apps.lazy_model_operation(partial_method, make_model_tuple(sender))
  
      def connect(self, receiver, sender=None, weak=True, dispatch_uid=None, apps=None):
          self._lazy_method(super(ModelSignal, self).connect, apps, receiver, sender, dispatch_uid=dispatch_uid)
  
      def disconnect(self, receiver=None, sender=None, weak=None, dispatch_uid=None, apps=None):
 
</s> remove         # import models here to avoid a circular import
        from django.db import models
        if isinstance(sender, models.Model) or sender is None:
            # Skip lazy_model_operation to get a return value for disconnect()
 </s> add         if isinstance(sender, six.string_types):
            apps = apps or Options.default_apps
            apps.lazy_model_operation(partial_method, make_model_tuple(sender))
        else:
          from django.db import models
          if isinstance(sender, models.Model) or sender is None:
              # Skip lazy_model_operation to get a return value for disconnect()
              return partial_method(sender)


  
      def connect(self, receiver, sender=None, weak=True, dispatch_uid=None, apps=None):
          self._lazy_method(super(ModelSignal, self).connect, apps, receiver, sender, dispatch_uid=dispatch_uid)
  
      def disconnect(self, receiver=None, sender=None, weak=None, dispatch_uid=None, apps=None):
keep keep keep keep replace replace keep keep keep keep keep
 Fixed #26686 -- Fixed crash when registering model signals with abstract senders. 
django/db/models/signals.py