Sorry - that was ambiguous on my part. I can see that *your* code checks both; I was referring to the existing validation.py in Django trunk.