-
With django-filter, filters with empty strings (e.g. In Django Ninja, using FilterSchema like: from ninja import FilterSchema, Field
from typing import Optional
class ProductListFilters(FilterSchema):
category_id: int
q: Optional[str] = Field(
None,
q=["name__icontains", "code__icontains"]
)
name: Optional[str] = Field(
None,
q="name__icontains"
)
status: Optional[str] = None If I query:
it does not ignore empty string filters ( Is there a way to make Django Ninja treat empty strings as |
Beta Was this translation helpful? Give feedback.
Answered by
vitalik
May 29, 2025
Replies: 1 comment 1 reply
-
@blasferna you can use model_validator: from ninja import FilterSchema, Field, Query
from typing import Optional
from pydantic import model_validator
class ProductListFilters(FilterSchema):
category_id: int
q: Optional[str] = Field(None, q=["name__icontains", "code__icontains"])
name: Optional[str] = Field(None, q="name__icontains")
status: Optional[str] = None
@model_validator(mode="before")
def remove_empty_strings(cls, values):
# changing empty strings to None
for f in cls.__pydantic_fields__:
if getattr(values, f, None) == "":
setattr(values, f, None)
return values
@api.get("/filters")
def test_filters(request, filters: Query[ProductListFilters]):
return filters.dict(exclude_none=True) |
Beta Was this translation helpful? Give feedback.
1 reply
Answer selected by
blasferna
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@blasferna you can use model_validator: