[Django] #33485: inlineformset_factory generate more db subquerys when the model have fk

13 views
Skip to first unread message

Django

unread,
Feb 1, 2022, 1:30:52 PM2/1/22
to django-...@googlegroups.com
#33485: inlineformset_factory generate more db subquerys when the model have fk
-----------------------------------------+------------------------
Reporter: DARKDEYMON | Owner: nobody
Type: Uncategorized | Status: new
Component: Forms | Version: 4.0
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
-----------------------------------------+------------------------
in line 859 from django.forms.models the variable qs makes a new query
from model._default_manager.get_queryset() insted of take values generated
by queryset (in my case my queryset habe select_related and
prefetch_related data because I don't want to repeat the subqueries
internally) in inlineformset_factory.

Reason why having fk in the model generates many subqueries to collect
again the data that already exists in the queryset variable, I have not
found a better way to avoid such subqueries, so this seems to me to be an
error

{{{
if isinstance(pk, (ForeignKey, OneToOneField)):
qs = pk.remote_field.model._default_manager.get_queryset()
else:
qs = self.model._default_manager.get_queryset()
qs = qs.using(form.instance._state.db)
if form._meta.widgets:
widget = form._meta.widgets.get(self._pk_field.name,
HiddenInput)
else:
widget = HiddenInput
form.fields[self._pk_field.name] = ModelChoiceField(qs,
initial=pk_value, required=False, widget=widget)
super().add_fields(form, index)
{{{

--
Ticket URL: <https://code.djangoproject.com/ticket/33485>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

Django

unread,
Feb 1, 2022, 1:38:51 PM2/1/22
to django-...@googlegroups.com
#33485: inlineformset_factory generate more db subquerys when the model have fk
-------------------------------------+-------------------------------------
Reporter: Reynaldo Juan | Owner: nobody
Pereira Heredia |

Type: Uncategorized | Status: new
Component: Forms | Version: 4.0
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
-------------------------------------+-------------------------------------
Changes (by Reynaldo Juan Pereira Heredia):

* Attachment "django querys.png" added.

when have fk in model generate more db querys

Django

unread,
Feb 1, 2022, 2:02:21 PM2/1/22
to django-...@googlegroups.com
#33485: inlineformset_factory generate more db subquerys when the model have fk
-------------------------------------+-------------------------------------
Reporter: Reynaldo Juan | Owner: nobody
Pereira Heredia |
Type: | Status: closed
Cleanup/optimization |
Component: Forms | Version: 4.0
Severity: Normal | Resolution: duplicate

Keywords: | Triage Stage:
| Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Mariusz Felisiak):

* status: new => closed
* type: Uncategorized => Cleanup/optimization
* resolution: => duplicate


Comment:

Duplicate of #18597.

--
Ticket URL: <https://code.djangoproject.com/ticket/33485#comment:1>

Reply all
Reply to author
Forward
0 new messages