          model_list = None
          try:
              model_list = self._get_models_cache[cache_key]
              if self.available_apps is not None and only_installed:
                  model_list = [m for m in model_list if m._meta.app_label in self.available_apps]
              return model_list
          except KeyError:
              pass
          self._populate()
          if app_mod:
 
</s> remove             model_list = [m for m in model_list if m._meta.app_label in self.available_apps]
 </s> add             model_list = [
                m for m in model_list
                if self.app_configs[m._meta.app_label].name in self.available_apps
            ] </s> remove                     and app_label not in self.available_apps):
 </s> add                     and app_config.name not in self.available_apps): </s> remove         if self.available_apps is not None and app_config.label not in self.available_apps:
 </s> add         if self.available_apps is not None and app_config.name not in self.available_apps: </s> remove             if self.available_apps is not None and app_config.label not in self.available_apps:
 </s> add             if self.available_apps is not None and app_config.name not in self.available_apps: </s> remove         if not set(available).issubset(set(settings.INSTALLED_APPS)):
            extra = set(available) - set(settings.INSTALLED_APPS)
 </s> add         available = set(available)
        installed = set(settings.INSTALLED_APPS)
        if not available.issubset(installed):
                model_list = [
                    m for m in model_list
                    if self.app_configs[m._meta.app_label].name in self.available_apps
                ]
          model_list = None
          try:
              model_list = self._get_models_cache[cache_key]
              if self.available_apps is not None and only_installed:
                model_list = [
                    m for m in model_list
                    if self.app_configs[m._meta.app_label].name in self.available_apps
                ]
              return model_list
          except KeyError:
              pass
          self._populate()
          if app_mod:
keep keep keep keep replace keep keep keep keep keep
 Simplified handling of available_apps slightly.

It feels more natural for self.available_apps to contain app names (like
INSTALLED_APPS) than app labels, and this is easy to implement now. 
django/apps/cache.py