Iterates through all associated Fields and applies all attached Rules. Depending on 'return_collated_results',
        this method will either return True (all rules successful), False (all, or some, rules failed)
        or a dictionary list
        containing the collated results of all Field Rules.
        Keyword arguments:
        return_collated_results bool -- Returns dictionary list of Field Rule collated results instead of True or False.

def run(cls, return_results=False):
        """ Iterates through all associated Fields and applies all attached Rules. Depending on 'return_collated_results',
        this method will either return True (all rules successful), False (all, or some, rules failed)
        or a dictionary list
        containing the collated results of all Field Rules.
        Keyword arguments:
        return_collated_results bool -- Returns dictionary list of Field Rule collated results instead of True or False.
        """
        cls.result = []

        passed = True

        for field in cls.fields:
            result, errors = field.run()

            results = {
                'field': field.name,
                'value': field.value,
                'passed': result,
                'errors': None
            }

            if errors:
                passed = False
                results['errors'] = errors

            cls.result.append(results)

        if return_results:
            return cls.result

        return passed