#24271: Error message for fields.E005 does not specify that both 'actual value',
'human readable name' must be strings/'Actual Value should be able to be a
non-string
----------------------------------+--------------------
Reporter: AncientSwordRage | Owner: nobody
Type: Bug | Status: new
Component: Core (Other) | Version: 1.7
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Easy pickings: 1 | UI/UX: 0
----------------------------------+--------------------
There is some
[https://github.com/django/django/blob/master/django/db/models/fields/__init__.py#L254
code] that checks your choice of choices is valid. At one point it checks
this:
{{{ isinstance(choice, six.string_types)}}}
Which checks that BOTH parts of the 2-tuple are strings (e.g. human
readable). But the error message just says:
"'choices' must be an iterable containing (actual value, human
readable name) tuples."
Which does not specify type in anyway, (e.g it doesn't say they must be
some kind of string).
Either the error should say that both parts must be strings (and thus
block some fields from using them e.g. integer fields), or only the
second element should be checked, thusly:
{{{
>>> choices = (
... (1, 'Primary'), (2, 'Secondary'), (3, 'Tertiary')
... )
>>> any(isinstance(choice, six.string_types) for choice in choices)
False
>>> any(isinstance(choice[1], six.string_types) for choice in choices)
True
>>>
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/24271>
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 post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/059.aec4b7c10164e7723d6565fce74159ca%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.