Changes between Version 2 and Version 3 of Ticket #25980
- Timestamp:
- Dec 23, 2015, 1:09:02 PM (9 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Ticket #25980
- Property Summary Inconsistent error behaviour when providing a queryset as initial value on ModelMultipleChoiceField → Wrong handling of initial value on disabled ModelMultipleChoiceField
-
Ticket #25980 – Description
v2 v3 3 3 but, when saving the form i got an error {{{ Enter a list of values.}}} 4 4 5 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. 5 1. this happens because disabled fields send their initial value to cleaning, see [[https://github.com/django/django/blob/d91cc25a2a43cb2526943dc2285ffe59e38fabfd/django/forms/forms.py#L372 here]. in case of model fields, it looks like this must be a list of PKs, which is quite unhandy to build (something like {{{list(queryset.values_list('pk', flat=True))}}}) 6 2. 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. 6 7 7 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] 8 9 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. 8 3. something else appeared fishy to me: in one line the clean 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. 10 9 11 10 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. 12 11 13 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.12 4. 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.