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.4.tar.gz (21.0 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.4-py3-none-any.whl (5.6 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for django_scalar-0.1.4.tar.gz
Algorithm Hash digest
SHA256 9f27d623fef5fe20783531fb15ab6bab1f24f10441eec184c6575fd192bfcae2
MD5 1921d25dc24c49d1963226375e5f54c5
BLAKE2b-256 bae8c57d1f186df2ee95fd59764659785ab52d05c65052b6c177e86cb7ac2bf3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for django_scalar-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 30e9a4fee3b5dbaf9c473bfc58fedb65ef4579898bd3fe39ec50ec283ba38c5b
MD5 efd7552e64bf8f349f4f530a1e6b65d6
BLAKE2b-256 56d59600e58f8892f6a47651c7935f31793f07004afa9e55d8a4c2c4c8d5ab4b

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