MCPcopy
hub / github.com/tortoise/tortoise-orm / resolve_for_queryset

Method resolve_for_queryset

tortoise/query_utils.py:251–274  ·  view source on GitHub ↗

Called internally to generate prefetching query. :param queryset: Custom QuerySet to use for prefetching. :raises OperationalError: If field does not exist in model.

(self, queryset: QuerySet)

Source from the content-addressed store, hash-verified

249 self.queryset.query = copy(self.queryset.model._meta.basequery)
250
251 def resolve_for_queryset(self, queryset: QuerySet) -> None:
252 """
253 Called internally to generate prefetching query.
254
255 :param queryset: Custom QuerySet to use for prefetching.
256 :raises OperationalError: If field does not exist in model.
257 """
258
259 first_level_field, __, forwarded_prefetch = self.relation.partition("__")
260 if first_level_field not in queryset.model._meta.fetch_fields:
261 raise OperationalError(
262 f"relation {first_level_field} for {queryset.model._meta.db_table} not found"
263 )
264
265 if forwarded_prefetch:
266 if first_level_field not in queryset._prefetch_map:
267 queryset._prefetch_map[first_level_field] = set()
268 queryset._prefetch_map[first_level_field].add(
269 Prefetch(forwarded_prefetch, self.queryset, to_attr=self.to_attr)
270 )
271 else:
272 queryset._prefetch_queries.setdefault(first_level_field, []).append(
273 (self.to_attr, self.queryset)
274 )
275
276
277def get_json_filter_operator(

Callers 1

prefetch_relatedMethod · 0.80

Calls 3

OperationalErrorClass · 0.90
PrefetchClass · 0.85
addMethod · 0.80

Tested by

no test coverage detected