我有这个模型:
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/