From 14545dec8d0f0194d0f0f6bee0bc10f6a45cbc71 Mon Sep 17 00:00:00 2001 From: nightcityblade Date: Wed, 19 Aug 2026 23:29:47 +0800 Subject: [PATCH 1/2] [django-filter] Broaden OrderingFilter fields parameter --- stubs/django-filter/django_filters/filters.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stubs/django-filter/django_filters/filters.pyi b/stubs/django-filter/django_filters/filters.pyi index 40707625c9b0..5074f5c8bca4 100644 --- a/stubs/django-filter/django_filters/filters.pyi +++ b/stubs/django-filter/django_filters/filters.pyi @@ -303,7 +303,7 @@ class OrderingFilter(BaseCSVFilter, ChoiceFilter): field_name: str | None = None, lookup_expr: str | None = None, *, - fields: dict[str, str] | Iterable[str] | Iterable[tuple[str, str]] = ..., + fields: dict[str, str] | Iterable[str | tuple[str, str]] = ..., field_labels: dict[str, StrOrPromise] = ..., # Inherited from ChoiceFilter null_value: Any = ..., # Null value can be any type (None, empty string, etc.) From db6c395a990b0a62e86140fe7dbf3a5aa06b70f8 Mon Sep 17 00:00:00 2001 From: nightcityblade Date: Thu, 20 Aug 2026 23:27:27 +0800 Subject: [PATCH 2/2] [django-filter] Type normalize_fields precisely --- stubs/django-filter/django_filters/filters.pyi | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/stubs/django-filter/django_filters/filters.pyi b/stubs/django-filter/django_filters/filters.pyi index 5074f5c8bca4..ed728843981f 100644 --- a/stubs/django-filter/django_filters/filters.pyi +++ b/stubs/django-filter/django_filters/filters.pyi @@ -1,3 +1,4 @@ +from collections import OrderedDict from collections.abc import Callable, Iterable from typing import Any @@ -317,7 +318,7 @@ class OrderingFilter(BaseCSVFilter, ChoiceFilter): def get_ordering_value(self, param: str) -> str: ... def filter(self, qs: QuerySet[Any], value: Any) -> QuerySet[Any]: ... @classmethod - def normalize_fields(cls, fields: Any) -> list[str]: ... + def normalize_fields(cls, fields: dict[str, str] | Iterable[str | tuple[str, str]]) -> OrderedDict[str, str]: ... def build_choices(self, fields: Any, labels: dict[str, StrOrPromise] | None) -> list[tuple[str, str]]: ... class FilterMethod: