diff --git a/django/core/management/commands/makemigrations.py b/django/core/management/commands/makemigrations.py
index 2bb1ca9a41..486c897008 100644
--- a/django/core/management/commands/makemigrations.py
+++ b/django/core/management/commands/makemigrations.py
@@ -104,7 +104,7 @@ class Command(BaseCommand):
                     # At least one model must be migrated to the database.
                     router.allow_migrate(connection.alias, app_label, model_name=model._meta.object_name)
                     for app_label in consistency_check_labels
-                    for model in apps.get_models(app_label)
+                    for model in apps.get_app_config(app_label).get_models()
             )):
                 loader.check_consistent_history(connection)
 
diff --git a/docs/releases/1.10.4.txt b/docs/releases/1.10.4.txt
index c9c6181beb..3304df9071 100644
--- a/docs/releases/1.10.4.txt
+++ b/docs/releases/1.10.4.txt
@@ -12,3 +12,7 @@ Bugfixes
 * Quoted the Oracle test user's password in queries to fix the "ORA-00922:
   missing or invalid option" error when the password starts with a number or
   special character (:ticket:`27420`).
+
+* Fixed incorrect ``app_label`` / ``model_name`` arguments for
+  ``allow_migrate()`` in ``makemigrations`` migration consistency checks
+  (:ticket:`27461`).
diff --git a/tests/migrations/test_commands.py b/tests/migrations/test_commands.py
index da10f834f0..63f29dba6a 100644
--- a/tests/migrations/test_commands.py
+++ b/tests/migrations/test_commands.py
@@ -598,6 +598,7 @@ class MakeMigrationsTests(MigrationTestBase):
                 init_file = os.path.join(migration_dir, '__init__.py')
                 self.assertTrue(os.path.exists(init_file))
 
+    @override_settings(INSTALLED_APPS=['migrations', 'migrations2'])
     def test_makemigrations_consistency_checks_respect_routers(self):
         """
         The history consistency checks in makemigrations respect
@@ -638,7 +639,15 @@ class MakeMigrationsTests(MigrationTestBase):
                 with self.settings(DATABASE_ROUTERS=['migrations.routers.TestRouter']):
                     with mock.patch.object(TestRouter, 'allow_migrate', return_value=False) as allow_migrate:
                         call_command('makemigrations', 'migrations', verbosity=0)
-                allow_migrate.assert_called_with('other', 'migrations', model_name='UnicodeModel')
+                allow_migrate.assert_any_call('other', 'migrations', model_name='UnicodeModel')
+                # allow_migrate() is called with the correct arguments.
+                self.assertGreater(len(allow_migrate.mock_calls), 0)
+                for mock_call in allow_migrate.mock_calls:
+                    _, call_args, call_kwargs = mock_call
+                    connection_alias, app_name = call_args
+                    self.assertIn(connection_alias, ['default', 'other'])
+                    # Raises an error if invalid app_name/model_name occurs.
+                    apps.get_app_config(app_name).get_model(call_kwargs['model_name'])
                 self.assertEqual(ensure_schema.call_count, 4)
 
     def test_failing_migration(self):