diff --git a/pynamodb/models.py b/pynamodb/models.py
index 7e4513dd3..74d81adee 100644
--- a/pynamodb/models.py
+++ b/pynamodb/models.py
@@ -665,7 +665,8 @@ def query(
         # If this class has a discriminator attribute, filter the query to only return instances of this class.
         discriminator_attr = cls._get_discriminator_attribute()
         if discriminator_attr:
-            filter_condition &= discriminator_attr.is_in(*discriminator_attr.get_registered_subclasses(cls))
+            if index_name and discriminator_attr.attr_name != cls._indexes[index_name]._hash_key_attribute().attr_name:  # Don't filter if discriminator is indexes hash key.
+                filter_condition &= discriminator_attr.is_in(*discriminator_attr.get_registered_subclasses(cls))
 
         if page_size is None:
             page_size = limit