Commit 52a190b6 authored by Adam Brenecki's avatar Adam Brenecki Committed by Tim Graham
Browse files

Fixed #24988 -- Documented passing a dictionary of ValidationErrors to ValidationError

parent ece78684
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -253,13 +253,14 @@ access to more than a single field::
    import datetime
    from django.core.exceptions import ValidationError
    from django.db import models
    from django.utils.translation import ugettext_lazy as _

    class Article(models.Model):
        ...
        def clean(self):
            # Don't allow draft entries to have a pub_date.
            if self.status == 'draft' and self.pub_date is not None:
                raise ValidationError('Draft entries may not have a publication date.')
                raise ValidationError(_('Draft entries may not have a publication date.'))
            # Set the pub_date for published items if it hasn't been set already.
            if self.status == 'published' and self.pub_date is None:
                self.pub_date = datetime.date.today()
@@ -289,9 +290,17 @@ error to the ``pub_date`` field::
        def clean(self):
            # Don't allow draft entries to have a pub_date.
            if self.status == 'draft' and self.pub_date is not None:
                raise ValidationError({'pub_date': 'Draft entries may not have a publication date.'})
                raise ValidationError({'pub_date': _('Draft entries may not have a publication date.')})
            ...

If you detect errors in multiple fields during ``Model.clean()``, you can also
pass a dictionary mapping field names to errors::

    raise ValidationError({
        'title': ValidationError(_('Missing title.'), code='required'),
        'pub_date': ValidationError(_('Invalid date.'), code='invalid'),
    })

Finally, ``full_clean()`` will check any unique constraints on your model.

.. method:: Model.validate_unique(exclude=None)