I'm for sticking with ValueError here (or possibly even TypeError) as the problem this solves is more about the inner workings of Django and less about the user's design.