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)
| 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 | |
| 277 | def get_json_filter_operator( |
no test coverage detected