python - 在 Django rest api 中查询最小和最大大小

标签 python django django-models django-rest-framework django-queryset

我有这个模型:

class Image(models.Model):
    image_name=models.CharField(max_length=30)
    image=models.ImageField(upload_to='images',width_field='image_width', height_field='image_height',)
    image_width=models.PositiveIntegerField(null=True, blank=True, editable=False)
    image_height=models.PositiveIntegerField(null=True, blank=True, editable=False)
    image_size=models.IntegerField(null=True, blank=True,editable=False)

View 是这样的:

class ImageViewSet(viewsets.ModelViewSet):
        queryset = Image.objects.all()
        serializer_class = ImageSerializer
        filter_backends = (DjangoFilterBackend, OrderingFilter,)
        filter_fields = ('image_name',)
        ordering_fields = ('id','image_name,)

我能够保存具有所有这些属性的图像。我想要这样的查询来返回所有高度大于 100 且小于 300 的图像:

GET /images/?minheight=100&maxheight=300

如何在 Django 中实现这一点?

如果我尝试在最小高度为空的情况下触发 api,我会收到 500 服务器错误 GET/images/?minheight=

最佳答案

您必须根据 GET 参数手动过滤查询集。

class ImageViewSet(viewsets.ModelViewSet):
    queryset = Image.objects.all()
    serializer_class = ImageSerializer
    filter_backends = (DjangoFilterBackend, OrderingFilter,)
    filter_fields = ('image_name',)
    ordering_fields = ('id','image_name,')

    def get_queryset(self):
        minheight = self.request.GET.get('minheight')
        maxheight = self.request.GET.get('maxheight')

        return self.queryset.filter(image_height__gte=minheight, image_height__lt=maxheight)

关于python - 在 Django rest api 中查询最小和最大大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53914594/

相关文章:

python - 如何使用 django 纠正 zmq 地址使用错误

Python:MySQLdb 安装问题

python - 如何使用 odbc 查询 Sybase IQ 服务器?

python - 复制时为 "pygame.error: No available video device"

python - 请求对象中的 Django REST Framework 自定义 header

python - 如何从预填充对象的表单中排除字段

python /OpenCV : Computing a depth map from stereo images

python - 获取 post_save 信号中字段的先前值

mysql - django 查询中混合注释和聚合

django - 使用 Factory Boy 伪造 JSONField