#25980: Inconsistent error behaviour when providing a queryset as initial value
on
ModelMultipleChoiceField
-------------------------------+--------------------------------------
Reporter: karyon | Owner: nobody
Type: Uncategorized | Status: new
Component: Uncategorized | Version: 1.9
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 karyon:
Old description:
> So i provided a queryset as initial value for a non-required and disabled
> ModelMultipleChoiceField. it seemed to work as i saw the correct values
> in the rendered output.
>
> but, when saving the form i got an error {{{ Enter a list of values.}}}
>
> 1. the error did not show up when the queryset i provided yielded no
> results, which is inconsistent. the reason for that is that
> [https://github.com/django/django/blob/d91cc25a2a43cb2526943dc2285ffe59e38fabfd/django/forms/models.py#L1250
> this boolean expression] evaluates to true as soon as there are results
> in the queryset.
>
> 2. something else appeared fishy to me: in one line this method returns a
> queryset ({{{self.queryset.none()}}}), but in the next line it raises an
> error if the value is neither a list nor a tuple.
>
> if you folks tell me what the intended behaviour is / which types should
> be used, i can try to create a fix if you want.
>
> 3. and the last (slightly unrelated) issue: since the field was disabled,
> i was wondering why cleaning it doesn't take a shortcut and does nothing
> at all... bumped into this a few times.
New description:
So i provided a queryset as initial value for a non-required and disabled
ModelMultipleChoiceField. it seemed to work as i saw the correct values in
the rendered output.
but, when saving the form i got an error {{{ Enter a list of values.}}}
1. the error did not show up when the queryset i provided yielded no
results, which is inconsistent. the reason for that is that
[https://github.com/django/django/blob/d91cc25a2a43cb2526943dc2285ffe59e38fabfd/django/forms/models.py#L1250
this boolean expression] evaluates to true as soon as there are results in
the queryset.
edit: just found out this can only happen for disabled fields, because
there the initial value is cleaned, and not some value taken from the
widget, see
[https://github.com/django/django/blob/d91cc25a2a43cb2526943dc2285ffe59e38fabfd/django/forms/forms.py#L372
here]
2. something else appeared fishy to me: in one line this method returns a
queryset ({{{self.queryset.none()}}}), but in the next line it raises an
error if the value is neither a list nor a tuple.
if you folks tell me what the intended behaviour is / which types should
be used, i can try to create a fix if you want.
3. and the last (slightly unrelated) issue: since the field was disabled,
i was wondering why cleaning it doesn't take a shortcut and does nothing
at all... bumped into this a few times.
--
--
Ticket URL: <https://code.djangoproject.com/ticket/25980#comment:2>
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/064.cbabd4337bf427a94d28eb2639f20e7e%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.