From f5e4a699ca0f58818acbdf9081164060cee910fa Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Fri, 15 Feb 2013 09:00:55 +0800 Subject: Fixed #19822 -- Added validation for uniqueness on USERNAME_FIELD on custom User models. Thanks to Claude Peroz for the draft patch. --- django/core/management/validation.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'django/core') diff --git a/django/core/management/validation.py b/django/core/management/validation.py index f49a3c2232..587d3a0ad7 100644 --- a/django/core/management/validation.py +++ b/django/core/management/validation.py @@ -49,12 +49,16 @@ def get_validation_errors(outfile, app=None): # No need to perform any other validation checks on a swapped model. continue - # This is the current User model. Check known validation problems with User models + # If this is the current User model, check known validation problems with User models if settings.AUTH_USER_MODEL == '%s.%s' % (opts.app_label, opts.object_name): # Check that the USERNAME FIELD isn't included in REQUIRED_FIELDS. if cls.USERNAME_FIELD in cls.REQUIRED_FIELDS: e.add(opts, 'The field named as the USERNAME_FIELD should not be included in REQUIRED_FIELDS on a swappable User model.') + # Check that the username field is unique + if not opts.get_field(cls.USERNAME_FIELD).unique: + e.add(opts, 'The USERNAME_FIELD must be unique. Add unique=True to the field parameters.') + # Model isn't swapped; do field-specific validation. for f in opts.local_fields: if f.name == 'id' and not f.primary_key and opts.pk.name == 'id': -- cgit v1.3