Skip to main content

Add your description here

Project description

Note ⚠️ This is based on code forked from github.com/m1guer/django-scalar

requirements:

Documentation example:

    #views.py
    @extend_schema(
        responses={200: UserSerializer},
        tags=["User"],
        description="Retrieve a list of all users",
        methods=["GET"],
        parameters=get_filter_parameters(UserFilter), ## this get_filter_parameters is using the django-filters base to create the necessary parameters automatically.
    )
    def list(self, request: Request, *args: Any, **kwargs: Any) -> Response:
        return super().list(request, *args, **kwargs)
  #filters/user.py

usage of get_filter_parameters

  • you need to create a basic or complex django-filter class and then use the script from get_filter_parameters the auto-parse the class to a valid OpenApiParameter
  #(app)/filters/users.py
  import django_filters
  from core.models.user import User


  class UserFilter(django_filters.FilterSet):
      # Filter by username (case-insensitive exact match)
      username = django_filters.CharFilter(lookup_expr="iexact")
  
      # Filter by email (case-insensitive exact match)
      email = django_filters.CharFilter(lookup_expr="iexact")
  
      # Filter by full name (case-insensitive partial match)
      full_name = django_filters.CharFilter(
          field_name="first_name", lookup_expr="icontains", label="Full Name"
      )
  
      # Filter by is_active (boolean filter)
      is_active = django_filters.BooleanFilter()
  
      # Filter by date joined (range filter for datetime)
      date_joined_start = django_filters.DateTimeFilter(
          field_name="date_joined", lookup_expr="gte", label="Joined After"
      )
      date_joined_end = django_filters.DateTimeFilter(
          field_name="date_joined", lookup_expr="lte", label="Joined Before"
      )
  
      # Filter by genres (many-to-many relationship)
      genres = django_filters.ModelMultipleChoiceFilter(
          queryset=User.objects.all(), field_name="genres__name", label="Genres"
      )
  
      # Filter by trusty (boolean filter)
      is_trusty = django_filters.BooleanFilter()
  
      # Filter by fee range (decimal filter)
      min_fee = django_filters.NumberFilter(
          field_name="fee", lookup_expr="gte", label="Min Fee"
      )
      max_fee = django_filters.NumberFilter(
          field_name="fee", lookup_expr="lte", label="Max Fee"
      )
      type = django_filters.ChoiceFilter(
          choices=[
              ("music", "Musico"),
              ("establishment", "Estabelecimento"),
          ],
      )
  
      class Meta:
          model = User
          fields = [
              "username",
              "email",
              "is_active",
              "is_trusty",
              "genres",
              "date_joined_start",
              "date_joined_end",
              "min_fee",
              "max_fee",
              "type",
          ]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_scalar-0.1.3.tar.gz (13.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_scalar-0.1.3-py3-none-any.whl (5.6 kB view details)

Uploaded Python 3

File details

Details for the file django_scalar-0.1.3.tar.gz.

File metadata

  • Download URL: django_scalar-0.1.3.tar.gz
  • Upload date:
  • Size: 13.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.16

File hashes

Hashes for django_scalar-0.1.3.tar.gz
Algorithm Hash digest
SHA256 bc9a718e64e606131a875dbc14cb6f647f2746c209bdbca5c1eab1df9165e47c
MD5 f43fab0cbc3a189289b5fdad67eb695b
BLAKE2b-256 6a9b272aa5265e3ab26606d68294f6c5d2de4753a2a3c37b781e6750c88890ca

See more details on using hashes here.

File details

Details for the file django_scalar-0.1.3-py3-none-any.whl.

File metadata

File hashes

Hashes for django_scalar-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 57f6ddc15fd648a166bf0c23b006b1439fd12f76ebf0ef46099e266e076fc412
MD5 c48c75607ad03792806005881f28f281
BLAKE2b-256 17d3f7f78650c5693bfae68c81d308ea8c8a8f445036f6879eafec8d2344147f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page