Skip to content

Ignore empty string ("") filters in Django Ninja FilterSchema like django-filter #1474

Answered by vitalik
blasferna asked this question in Q&A
Discussion options

You must be logged in to vote

@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(re…

Replies: 1 comment 1 reply

Comment options

You must be logged in to vote
1 reply
@blasferna
Comment options

Answer selected by blasferna
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
2 participants