Home:ALL Converter>Django rest framework filter not working with foreignkey

Django rest framework filter not working with foreignkey

Ask Time:2020-08-13T12:29:07         Author:satyajit

Json Formatter

I was following django-filters official docs: https://django-filter.readthedocs.io/en/stable/guide/rest_framework.html#adding-a-filterset-with-filterset-class

I have setup volume with ForeignKey relationship filter-volume. i want to get filters of volume with min_volume and max_volume , but i'm getting wrong data whenever i execute the filters.

It would be great if anyone could figure out where i doing thing wrong.

models.py :

class Cuboid(models.Model):
    title = models.CharField(max_length=80)
    volume = models.ForeignKey('FilterVolume', on_delete=models.CASCADE)

    def __str__(self):
        return self.title

class FilterVolume(models.Model):
    volume = models.IntegerField(max_length=30)

    def __unicode__(self):
        return self.volume

filters.py

from django_filters import rest_framework as filters
from crud_api.models import Cuboid

class CuboidFilter(filters.FilterSet):
    min_volume = filters.NumberFilter(field_name="volume", lookup_expr='gte')
    max_volume = filters.NumberFilter(field_name="volume", lookup_expr='lte')

    class Meta:
        model = Cuboid
        fields = [
            'min_volume','max_volume'
        ]

views.py

class CuboidListApiView(generics.ListAPIView):
    model = Cuboid
    queryset = Cuboid.objects.all()
    serializer_class = CuboidSerializer
    filterset_class = CuboidFilter

Foreign key error

Author:satyajit,eproduced under the CC 4.0 BY-SA copyright license with a link to the original source and this disclaimer.
Link to original article:https://stackoverflow.com/questions/63388149/django-rest-framework-filter-not-working-with-foreignkey
yy