#9076: Inline forms can result in a "Please correct the errors below." message
with no errors listed.
-------------------------------+--------------------------------------------
Reporter: coady | Owner: nobody
Status: reopened | Milestone:
Component: Forms | Version: 1.0
Resolution: | Keywords:
Stage: Accepted | Has_patch: 1
Needs_docs: 0 | Needs_tests: 0
Needs_better_patch: 0 |
-------------------------------+--------------------------------------------
Comment (by kmtracey):
The note above is not the whole story...the 'caching' of the queryset by
`get_queryset()` in !BaseModelFormSet was never used in old (pre-[7270])
code by !BaseInlineFormSet because first it wasn't there until [8805] and
second !BaseInlineFormSet has always over-ridden `get_queryset()` so the
superclass method was never called for a !BaseInlineFormset anyway. So I
think the change in [7270] was a general cleanup to not not provide a
parameter to the superclass init that wasn't doing anything -- since the
subclass had its own `get_queryset()`.
The problem here was introduced in [8805], when the need for caching the
queryset was introduced by the addition of the _construct_form method that
contains a loop for initial_form_count that contains within it
`self.get_queryset()[i]`. That's what's causing the limit/offset queries.
At the same time !BaseModelFormSet's `get_queryset()` was modified to
cache the queryset in `_queryset`, but this isn't used by a
!BaseInlineFormSet because it has its own `get_queryset()` method.
It doesn't look to me like there is any good reason for !BaseInlnieFormSet
to have it's own `get_queryset()` instead of just computing it during
init, passing it in as a parameter to the superclass init, and then
letting the superclass `get_querset()` do its thing. Besides the
`_queryset` caching, !BaseInlineFormSet's method is also missing the bit
about limiting the query to `max_num`. So even though only `max_num`
inlines are displayed in the admin, the actual database query is not
limited.
So I'm even more inclined to check in a slight variant on the
inline_queryset.diff patch (I still don't see why queryset should be
exposed as a param to !BaseInlineFormSet) barring feedback to the
contrary.
--
Ticket URL: <http://code.djangoproject.com/ticket/9076#comment:20>
Django <http://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 post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/django-updates?hl=en
-~----------~----~----~----~------~----~------~--~---