Django rest框架筛选器不使用foreignkey

2024-09-28 05:16:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我在看django-filters官方文件:https://django-filter.readthedocs.io/en/stable/guide/rest_framework.html#adding-a-filterset-with-filterset-class

我已设置了volume与外键关系filter-volume。我想用min_volumemax_volume获得volume的过滤器,但是每当我执行过滤器时,我都会得到错误的数据

如果有人能找出我哪里做错了,那就太好了

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

过滤器.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


Tags: djangopyselfrest过滤器modelsframeworkfilter
1条回答
网友
1楼 · 发布于 2024-09-28 05:16:22

field_name改为volume__volumevolume

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

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

相关问题 更多 >

    热门问题