【发布时间】:2021-06-06 04:02:59
【问题描述】:
我在我的 web 应用程序中使用 Django 作为后端。我的数据库中有一些数据,我可以使用 objects.get() 方法很好地查询。
volumes = Volume.objects.get(volumeEngTitle="If there is a volume Title")
这会在 Postman 中返回以下值:
{
"volumeNumber": 8.1
"chapterNumber": 12
"Translated": True
}
但我需要返回多个具有相同标题的卷。这就是为什么我尝试使用 filter() 但 Postman 中 Http.Get 的结果总是一个空集,例如 {}。 filter() 似乎永远找不到任何与 volumeEngTitle 匹配的实例,即使它存在。
这是返回音量的整个函数。
from rest_framework.response import Response
from .serializers import VolumeSerializer
from ..volumeModel import Volume
@api_view(['GET'])
def getVolume(request):
volumes = Volume.objects.filter(volumeEngTitle="If there is a volume Title")
#This works like a charm but only for a single instance:
#volumes = Volume.objects.get(volumeEngTitle="If there is a volume Title")
serializer = VolumeSerializer(volumes)
return Response(serializer.data)
此方法的结果始终为 {}。即使它适用于 get() 方法。 我知道 get() 用于单个返回值,而 filter() 为我提供了一个具有多个值的查询集。但我不明白为什么过滤器根本不返回任何东西。 我需要为 filter() 指定任何内容吗?
编辑: VolumeSerializer 看起来像这样:
from rest_framework import serializers
from ..volumeModel import Volume
class VolumeSerializer(serializers.ModelSerializer):
class Meta:
model = Volume
fields = ['mangaVolumeNumber', 'chapterNumber', 'Translated']
【问题讨论】:
-
你的序列化器是什么样的?
-
如果您想要多个条目,请添加到序列化程序 many=True
-
我已经编辑了帖子以包含 VolumeSerializer。
-
+ 过滤器下的打印卷 它返回什么?
-
正是 many=True 解决了这个问题。感谢您的帮助!
标签: python django django-models