Add your description here
Project description
Note ⚠️ This is based on code forked from github.com/m1guer/django-scalar
requirements:
- drf-spectacular
- django-filters (optional)
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
Release history Release notifications | RSS feed
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)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bc9a718e64e606131a875dbc14cb6f647f2746c209bdbca5c1eab1df9165e47c
|
|
| MD5 |
f43fab0cbc3a189289b5fdad67eb695b
|
|
| BLAKE2b-256 |
6a9b272aa5265e3ab26606d68294f6c5d2de4753a2a3c37b781e6750c88890ca
|
File details
Details for the file django_scalar-0.1.3-py3-none-any.whl.
File metadata
- Download URL: django_scalar-0.1.3-py3-none-any.whl
- Upload date:
- Size: 5.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
57f6ddc15fd648a166bf0c23b006b1439fd12f76ebf0ef46099e266e076fc412
|
|
| MD5 |
c48c75607ad03792806005881f28f281
|
|
| BLAKE2b-256 |
17d3f7f78650c5693bfae68c81d308ea8c8a8f445036f6879eafec8d2344147f
|