diff --git a/.github/workflows/test-package.yml b/.github/workflows/test-package.yml index 43583fa..a116b42 100644 --- a/.github/workflows/test-package.yml +++ b/.github/workflows/test-package.yml @@ -66,7 +66,7 @@ jobs: env: DATABASE_URL: "sqlite:///testsuite" run: bash scripts/test.sh - - run: mypy --config-file mypy.ini ormar tests + - run: mypy ormar tests - name: Upload coverage uses: codecov/codecov-action@v1 - name: Test & publish code coverage diff --git a/ormar/queryset/prefetch_query.py b/ormar/queryset/prefetch_query.py index cd15f45..873199c 100644 --- a/ormar/queryset/prefetch_query.py +++ b/ormar/queryset/prefetch_query.py @@ -30,11 +30,11 @@ def sort_models(models: List["Model"], orders_by: Dict) -> List["Model"]: ] sort_criteria = sort_criteria[::-1] for criteria in sort_criteria: - key, value = criteria + key_name, value = criteria if value == "desc": - models.sort(key=lambda x: getattr(x, key), reverse=True) + models.sort(key=lambda x: getattr(x, key_name), reverse=True) else: - models.sort(key=lambda x: getattr(x, key)) + models.sort(key=lambda x: getattr(x, key_name)) return models diff --git a/ormar/queryset/utils.py b/ormar/queryset/utils.py index 617d04e..f99c698 100644 --- a/ormar/queryset/utils.py +++ b/ormar/queryset/utils.py @@ -214,21 +214,22 @@ def extract_nested_models( # noqa: CCR001 follow = [rel for rel in model_type.extract_related_names() if rel in select_dict] for related in follow: child = getattr(model, related) - if child: - target_model = model_type.Meta.model_fields[related].to - if isinstance(child, list): - extracted.setdefault(target_model.get_name(), []).extend(child) - if select_dict[related] is not Ellipsis: - for sub_child in child: - extract_nested_models( - sub_child, target_model, select_dict[related], extracted - ) - else: - extracted.setdefault(target_model.get_name(), []).append(child) - if select_dict[related] is not Ellipsis: + if not child: + continue + target_model = model_type.Meta.model_fields[related].to + if isinstance(child, list): + extracted.setdefault(target_model.get_name(), []).extend(child) + if select_dict[related] is not Ellipsis: + for sub_child in child: extract_nested_models( - child, target_model, select_dict[related], extracted + sub_child, target_model, select_dict[related], extracted ) + else: + extracted.setdefault(target_model.get_name(), []).append(child) + if select_dict[related] is not Ellipsis: + extract_nested_models( + child, target_model, select_dict[related], extracted + ) def extract_models_to_dict_of_lists( diff --git a/ormar/relations/querysetproxy.py b/ormar/relations/querysetproxy.py index aaddacc..8170cf3 100644 --- a/ormar/relations/querysetproxy.py +++ b/ormar/relations/querysetproxy.py @@ -43,7 +43,7 @@ class QuerysetProxy(Generic[T]): type_: "RelationType", qryset: "QuerySet[T]" = None, ) -> None: - self.relation: Relation = relation + self.relation: "Relation" = relation self._queryset: Optional["QuerySet[T]"] = qryset self.type_: "RelationType" = type_ self._owner: Union[CallableProxyType, "Model"] = self.relation.manager.owner