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.

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.2.tar.gz (9.8 kB view details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: drf_lookup-0.1.2.tar.gz
  • Upload date:
  • Size: 9.8 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.2.tar.gz
Algorithm Hash digest
SHA256 cea7c2652f1c79d7c7c1a70a53033c5df35c82dcce544adca3e6fb697db51370
MD5 155b2039503c1acdcc1434906ae60fa3
BLAKE2b-256 5cae2d4598ef9f13de43ef1a7219689f6942e85088521e8eefdc6591c45a57de

See more details on using hashes here.

File details

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

File metadata

  • Download URL: drf_lookup-0.1.2-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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 27441f229f8183de69a7d9da70ed3fc65b3bb7ad5177a19d27aab158bba3a88d
MD5 aa12482223812aa40caad1373a0cd2c8
BLAKE2b-256 d2f8ebb3db88569863b60fe916d450b9c33c4deb9a55914795357f4d659552ba

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