In case of: amount = models.DecimalField( null=False, max_digits=16, decimal_places=2, blank=False, ) Decimal(47461379535606.35) converts to Decimal('47461379535606.4') What is not the best situation for testing. It seems that Django thinks about "." as a symbol that included into max_digits.
… from django 1.8 up
Test for the exact methods required by the iterator protocol. (https://docs.python.org/2/library/stdtypes.html#iterator-types)