mirror of
https://github.com/django/django.git
synced 2025-10-29 16:46:11 +00:00
Fixed #27499 -- Made Prefetches pickle without evaluating their QuerySet.
This commit is contained in:
@@ -1289,6 +1289,16 @@ class Prefetch(object):
|
||||
self.queryset = queryset
|
||||
self.to_attr = to_attr
|
||||
|
||||
def __getstate__(self):
|
||||
obj_dict = self.__dict__.copy()
|
||||
if self.queryset is not None:
|
||||
# Prevent the QuerySet from being evaluated
|
||||
obj_dict['queryset'] = self.queryset._clone(
|
||||
_result_cache=[],
|
||||
_prefetch_done=True,
|
||||
)
|
||||
return obj_dict
|
||||
|
||||
def add_prefix(self, prefix):
|
||||
self.prefetch_through = LOOKUP_SEP.join([prefix, self.prefetch_through])
|
||||
self.prefetch_to = LOOKUP_SEP.join([prefix, self.prefetch_to])
|
||||
|
||||
Reference in New Issue
Block a user