【发布时间】:2016-04-13 08:01:17
【问题描述】:
我在 Django 中有以下模型,我正在尝试执行过滤器,以便只返回一个集合中的一个外键值作为结果集的一部分。
class Document(models.Model):
name = models.CharField(...)
version = models.ForeignKey(Version)
class Version(models.Model):
num = models.IntegerField()
我的序列化器看起来像这样。
class VersionSerializer(serializers.ModelSerializer):
class Meta:
model = Version
fields = (...)
class DocumentVersionSerializer(serializers.ModelSerializer):
version = VersionSerializer(source='version_set', many=True, read_only=True)
class Meta:
model = Document
fields = (...)
我的 RetrieveAPIView 看起来像这样:
class Search(ListAPIView):
queryset = Document.objects.all().distinct()
serializer_class = DocumentVersionSerializer
def filter_queryset(self, queryset):
queryset = super(Search, self).filter_queryset(queryset)
queryset.filter(version__num=self.kwargs.get('version_num))
return queryset
我所追求的是以下,一个具有 1 个版本的 Document 对象,它被设置为 URL 的一部分。所以 URL 可能类似于:/api/document/version/1.1/
json 类似于:
{
"name": "test document",
"version": {
"num": "1.1",
},
}
但我明白了:
{
"name": "test document",
"version": [
{
"num": "1.1",
},
{
"num": "1.2",
},
]
}
我遇到的问题是多个版本号在 json 响应中返回。如何限制返回响应的数量。
【问题讨论】:
标签: django django-models django-rest-framework