#34818: GenericIPAddressField ValidationError incorrect message when both 
protocols
present
---------------------------------+--------------------------------------
     Reporter:  minusf           |                    Owner:  (none)
         Type:  Bug              |                   Status:  new
    Component:  Error reporting  |                  Version:  4.2
     Severity:  Normal           |               Resolution:
     Keywords:                   |             Triage Stage:  Unreviewed
    Has patch:  0                |      Needs documentation:  0
  Needs tests:  0                |  Patch needs improvement:  0
Easy pickings:  0                |                    UI/UX:  0
---------------------------------+--------------------------------------
Description changed by minusf:

Old description:

> It seems that the `invalid` code for `GenericIPAddressField` models gets
> clobbered when both protocols are present in a model:
>
> {{{
> class Site(models.Model):
>     ipv6 = models.GenericIPAddressField(protocol="IPv6")
>     ipv4 = models.GenericIPAddressField(protocol="IPv4")
> }}}
>
> {{{
> >>> site = Site(ipv6="6", ipv4="4")
> >>> site.full_clean()
> raceback (most recent call last):
>   File "<console>", line 1, in <module>
>   File "/src/tmp/ip_bug/venv/lib/python3.10/site-
> packages/django/db/models/base.py", line 1502, in full_clean
>     raise ValidationError(errors)
> django.core.exceptions.ValidationError: {'ipv6': ['Enter a valid IPv4
> address.'], 'ipv4': ['Enter a valid IPv4 address.']}
> }}}
> sometimes the other message wins:
> {{{
> ValidationError: {'ipv6': ['Enter a valid IPv6 address.'], 'ipv4':
> ['Enter a valid IPv6 address.']}
> }}}
>
> p.s. not sure about the component, perhaps could be "Database Layer:
> Models" or "Error reporting"?

New description:

 It seems that the `invalid` code for `GenericIPAddressField` models gets
 clobbered when both protocols are present in a model:

 {{{
 class Site(models.Model):
     ipv6 = models.GenericIPAddressField(protocol="IPv6")
     ipv4 = models.GenericIPAddressField(protocol="IPv4")
 }}}

 {{{
 >>> site = Site(ipv6="6", ipv4="4")
 >>> site.full_clean()
 Traceback (most recent call last):
   File "<console>", line 1, in <module>
   File "/src/tmp/ip_bug/venv/lib/python3.10/site-
 packages/django/db/models/base.py", line 1502, in full_clean
     raise ValidationError(errors)
 django.core.exceptions.ValidationError: {'ipv6': ['Enter a valid IPv4
 address.'], 'ipv4': ['Enter a valid IPv4 address.']}
 }}}
 sometimes the other message wins:
 {{{
 ValidationError: {'ipv6': ['Enter a valid IPv6 address.'], 'ipv4': ['Enter
 a valid IPv6 address.']}
 }}}

 p.s. not sure about the component, perhaps could be "Database Layer:
 Models" or "Error reporting"?

--

-- 
Ticket URL: <https://code.djangoproject.com/ticket/34818#comment:1>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/0107018a6ff56751-a7379b02-eeae-45d2-90c1-1d4826750fb8-000000%40eu-central-1.amazonses.com.

Reply via email to