diff --git a/ldapalchemy/model.py b/ldapalchemy/model.py
index ddecd7f4fcc6388ed80c896cb75aabb449682feb..0d9ded420563133d02f20b19ed9846f166997f0f 100644
--- a/ldapalchemy/model.py
+++ b/ldapalchemy/model.py
@@ -102,7 +102,7 @@ class Query(Sequence):
 
 	def filter_by(self, **kwargs):
 		filter_params = [(getattr(self.__model, attr).name, value) for attr, value in kwargs.items()]
-		return Query(self.__model, self.__filter_params + filter_params)
+		return type(self)(self.__model, self.__filter_params + filter_params)
 
 class QueryWrapper:
 	def __get__(self, obj, objtype=None):