ValidationError(s) from specific fields not rendered on admin add/change form
|Reported by:||Killarny||Owned by:||Honza Král|
|Has patch:||no||Needs documentation:||no|
|Needs tests:||no||Patch needs improvement:||no|
On the admin change form, ValidationErrors raised from some fields don't render properly. The message at the top of the form displays ("Please correct the errors below.") but the html for the specific error in the field row does not display. This is a problem with only some fields, but not others. For example, a ValidationError raised from a CharField when it's max_length is exceeded displays properly, but URLField and EmailField errors do not.
How to reproduce
This issue can be reproduced with a simple project with the following changes from the generated startproject and startapp:
DATABASE_ENGINE = 'sqlite3' DATABASE_NAME = 'db.sqlite' INSTALLED_APPS = ( ... 'django.contrib.admin', ... 'foo', )
Uncomment the admin lines in
from django.db import models class Bar(models.Model): url = models.URLField() email = models.EmailField() three_letters = models.CharField(max_length=3)
from django.contrib import admin from foo import models admin.site.register(models.Bar)
Sync the database and start the development environment, then visit http://127.0.0.1:8000/admin/foo/bar/add/ and enter values in each of the fields.
Enter valid data into the EmailField and CharField, and put "google.com" in the URLField. This should show an error along the lines of "Enter a valid URL.", but it does not.
Conversely, entering a valid url (such as "http://google.com") and putting more than the max 3 characters in the CharField will properly show an error like "Ensure this value has at most 3 characters (it has 5)."