mirror of
https://github.com/django/django.git
synced 2025-10-06 00:30:37 +00:00
Avoided unnecessary recreation of RelatedObjects
Refs #19399. Thanks to Track alias KJ for the patch.
This commit is contained in:
parent
6158c79dbe
commit
3647c0a49a
3 changed files with 6 additions and 11 deletions
|
@ -4,7 +4,6 @@ import re
|
|||
from bisect import bisect
|
||||
|
||||
from django.conf import settings
|
||||
from django.db.models.related import RelatedObject
|
||||
from django.db.models.fields.related import ManyToManyRel
|
||||
from django.db.models.fields import AutoField, FieldDoesNotExist
|
||||
from django.db.models.fields.proxy import OrderWrt
|
||||
|
@ -424,10 +423,10 @@ class Options(object):
|
|||
for f in klass._meta.local_fields:
|
||||
if f.rel and not isinstance(f.rel.to, six.string_types):
|
||||
if self == f.rel.to._meta:
|
||||
cache[RelatedObject(f.rel.to, klass, f)] = None
|
||||
proxy_cache[RelatedObject(f.rel.to, klass, f)] = None
|
||||
cache[f.related] = None
|
||||
proxy_cache[f.related] = None
|
||||
elif self.concrete_model == f.rel.to._meta.concrete_model:
|
||||
proxy_cache[RelatedObject(f.rel.to, klass, f)] = None
|
||||
proxy_cache[f.related] = None
|
||||
self._related_objects_cache = cache
|
||||
self._related_objects_proxy_cache = proxy_cache
|
||||
|
||||
|
@ -468,7 +467,7 @@ class Options(object):
|
|||
if (f.rel
|
||||
and not isinstance(f.rel.to, six.string_types)
|
||||
and self == f.rel.to._meta):
|
||||
cache[RelatedObject(f.rel.to, klass, f)] = None
|
||||
cache[f.related] = None
|
||||
if app_cache_ready():
|
||||
self._related_many_to_many_cache = cache
|
||||
return cache
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue