#33276: Strange difference for prefetched_objects between related_field.remove,
m2m_related_field.remove and generic_related_field.remove.
-------------------------------------+-------------------------------------
Reporter: Maxim | Owner: nobody
Danilov |
Type: | Status: new
Cleanup/optimization |
Component: Database | Version: 3.2
layer (models, ORM) |
Severity: Normal | Keywords: prefetch_related
Triage Stage: | Has patch: 0
Unreviewed |
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 1
UI/UX: 0 |
-------------------------------------+-------------------------------------
Hello.
i want to call _remove_prefetched_objects only to remove cached old data.
But i dont want to use private method.
instance.m2m_related_field.remove() - made what i want.
instance.generic_related_field.remove() - Does nothing
instance.related_field.remove() - Does nothing
in django (> 3.2) code i see:
{{{
# (django.db.models.fields.related_descriptors 964-965)
# m2m_related_field
def remove(self, *objs):
self._remove_prefetched_objects()
...
# (django.contrib.contenttypes.fields 635-645)
# generic_related_field
def remove(self, *objs, bulk=True):
if not objs:
return
...
return self._clear(...)
def _clear(...):
self._remove_prefetched_objects()
# (django.db.models.fields.related_descriptors 694-719)
# related_field
def remove(self, *objs, bulk=True):
if not objs:
return
....
return self_clear(...)
def _clear(...):
self._remove_prefetched_objects()
}}}
i think, It is better to made the same functionality in remove method for
all related fields.
{{{
# for all related fields:
def remove(self, *objs):
self._remove_prefetched_objects()
if objs:
return self._do_something_to_remove(....)
}}}
This made a removal interface more standard.
--
Ticket URL: <https://code.djangoproject.com/ticket/33276>
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 view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/052.61e34c6f8a19c5a832aa9501c4cdd543%40djangoproject.com.