django model CharField: max_length does not work? django model CharField: max_length does not work? django django

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.