Add new filter to the query set. Note that since QuerySet is lazy, it would
        just combine this filter with the original filter with an 'AND'
        :Parameters: 
        - filter: a dictionary
        :Return: a new QuerySet object

def filter(self, filter):
        """
        Add new filter to the query set. Note that since QuerySet is lazy, it would
        just combine this filter with the original filter with an 'AND'
        :Parameters: 
        - filter: a dictionary
        :Return: a new QuerySet object
        """
        new_query_set = self.clone()
        new_query_set.query.add_filter(filter)
        
        return new_query_set