MCPcopy
hub / github.com/ormar-orm/ormar / load_all

Method load_all

ormar/models/model.py:367–414  ·  view source on GitHub ↗

Allow to refresh existing Models fields from database. Performs refresh of the related models fields. By default, loads only self and the directly related ones. If follow=True is set it loads also related models of related models. To not get stuck in an in

(
        self: T,
        follow: bool = False,
        exclude: Union[list, str, set, dict, None] = None,
        order_by: Union[list, str, None] = None,
    )

Source from the content-addressed store, hash-verified

365 return self
366
367 async def load_all(
368 self: T,
369 follow: bool = False,
370 exclude: Union[list, str, set, dict, None] = None,
371 order_by: Union[list, str, None] = None,
372 ) -> T:
373 """
374 Allow to refresh existing Models fields from database.
375 Performs refresh of the related models fields.
376
377 By default, loads only self and the directly related ones.
378
379 If follow=True is set it loads also related models of related models.
380
381 To not get stuck in an infinite loop as related models also keep a relation
382 to parent model visited models set is kept.
383
384 That way already visited models that are nested are loaded, but the load do not
385 follow them inside. So Model A -> Model B -> Model C -> Model A -> Model X
386 will load second Model A but will never follow into Model X.
387 Nested relations of those kind need to be loaded manually.
388
389 :param order_by: columns by which models should be sorted
390 :type order_by: Union[list, str]
391 :raises NoMatch: If given pk is not found in database.
392
393 :param exclude: related models to exclude
394 :type exclude: Union[list, str, set, dict]
395 :param follow: flag to trigger deep save -
396 by default only directly related models are saved
397 with follow=True also related models of related models are saved
398 :type follow: bool
399 :return: reloaded Model
400 :rtype: Model
401 """
402 relations = list(self.extract_related_names())
403 if follow:
404 relations = self._iterate_related_models()
405 queryset = self.__class__.objects
406 if exclude:
407 queryset = queryset.exclude_fields(exclude)
408 if order_by:
409 queryset = queryset.order_by(order_by)
410 instance = await queryset.select_related(relations).get(pk=self.pk)
411 self._orm.clear()
412 self.update_from_dict(instance.model_dump())
413 self.__setattr_fields__.clear()
414 return self

Calls 9

extract_related_namesMethod · 0.80
update_from_dictMethod · 0.80
model_dumpMethod · 0.80
exclude_fieldsMethod · 0.45
order_byMethod · 0.45
getMethod · 0.45
select_relatedMethod · 0.45
clearMethod · 0.45