#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 django-updates+unsubscr...@googlegroups.com.
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