Skip to main content

Helper for retrieve select options of drf fields and django-filter filters.

Project description

Drf-lookup

Drf-lookup helps you retrieve options for serializer fields and django-filter filters. It adds additional actions to the viewset, checks the queryset and choices attributes and returns valid values for the requested field/filter. This is useful when you are retrieving parameters asynchronously and don't need to create a view for each case.

Install

pip install drf-lookup

Example

# models
from django.db import models

class Category(models.Model):
    name = models.CharField(max_length=100, db_index=True)

    class Meta:
        verbose_name = 'category'
        verbose_name_plural = 'categories'
        ordering = ['name']

    def __str__(self) -> str:
        return self.name


class Article(models.Model):
    title = models.CharField(max_length=100, db_index=True)
    category = models.ForeignKey(Category, on_delete=models.CASCADE, null=True)

    class Meta:
        verbose_name = 'news'
        verbose_name_plural = 'news'
        ordering = ['-pk']

    def __str__(self) -> str:
        return self.title


# serializers
from rest_framework.serializers import ModelSerializer
class ArticleSerializer(ModelSerializer):
    class Meta:
        model = Article
        fields = ('id', 'title', 'category')


# filters
import django_filters
class ArticleFilterSet(django_filters.FilterSet):
    class Meta:
        model = Article
        fields = ('category',)


# views
from rest_framework.viewsets import ModelViewSet

from drf_lookup.views import LookupMixin


class ArticleViewSet(LookupMixin, ModelViewSet):
    queryset = Article.objects.all()
    serializer_class = ArticleSerializer
    filterset_class = ArticleFilterSet

Now, we can request options for the category field:

GET /articles/lookup_serializer/?lookup_action=create&lookup_field=category

GET /articles/lookup_filterset/?lookup_action=list&lookup_field=category

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

drf_lookup-0.1.4.tar.gz (10.0 kB view details)

Uploaded Source

Built Distribution

drf_lookup-0.1.4-py3-none-any.whl (13.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: drf_lookup-0.1.4.tar.gz
  • Upload date:
  • Size: 10.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for drf_lookup-0.1.4.tar.gz
Algorithm Hash digest
SHA256 ae9779aa011e7777899cfa7de81972b6913e0c708e9db5acca6a3e25fe263b73
MD5 f4115b3d346ebd4c2afd9295963a96cb
BLAKE2b-256 70ccdb63aa8936b8736d4f2f3fd50ad2e71fec7686214223af59a3620199c1ed

See more details on using hashes here.

File details

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

File metadata

  • Download URL: drf_lookup-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 13.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for drf_lookup-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 cfb60b08dea2dae56c6557d413a3f00b8d93a818037829c2d8ce56bb28870c24
MD5 03c7cc77a010e0ccde6cdb51c35d26d3
BLAKE2b-256 00f570827a82c70cd581b7079dfbb88eb59b316fde28cec49963f2fe0a7ca44f

See more details on using hashes here.

Supported by

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