django model CharField: max_length does not work?
SQLite does not enforce the length of a VARCHAR.
From the SQLite Frequently asked questions:
(9) What is the maximum size of a VARCHAR in SQLite?
SQLite does not enforce the length of a VARCHAR. You can declare a VARCHAR(10) and SQLite will be happy to let you put 500 characters in it. And it will keep all 500 characters intact - it never truncates.
If you update the database using the django admin or model forms, Django will do the length validation for you. In the shell, you could manually call full_clean
before saving, and catch the validation error.
f = Foo(myAction="more than 1 char")try: f.full_clean() f.save()except ValidationError as e: # Do something based on the errors contained in e.message_dict.