Django rest framework 如何在序列化程序字段中对查询集应用限制?

Django rest framework 如何在序列化程序字段中对查询集应用限制?,django-rest-framework,Django Rest Framework,我有一个关于字段查询集限制的问题 我有以下序列化程序: 类UserProfilesSerializer(serializers.Serializer): 定义初始化(self,*args,**kwargs): self.user=kwargs.pop(“用户”,无) serializers.Serializer.\uuuuu init\uuuuuu(self,*args,**kwargs) boats=serializers.SlugRelatedField(many=True,source=

我有一个关于字段查询集限制的问题

我有以下序列化程序:


类UserProfilesSerializer(serializers.Serializer):
定义初始化(self,*args,**kwargs):
self.user=kwargs.pop(“用户”,无)
serializers.Serializer.\uuuuu init\uuuuuu(self,*args,**kwargs)
boats=serializers.SlugRelatedField(many=True,source=“boatmodel\u set”,slug\u field=“boat\u name”,
只读(只读=真)
articles=serializers.StringRelatedField(many=True,source=“article\u set”,read\u only=True)
comment=serializers.StringRelatedField(many=True,source=“get\u comments”,read\u only=True)
其中每个字段表示不同的模式实例

父模型-用户 二级模型1–BoatModel,根据用户模型作为“BoatModel_set”遍历 次要模型2–文章,根据用户模型作为“文章集”遍历

观点


类UserProfileView(views.APIView):
def get(self,request,format=None,**kwargs):
user=self.request.user
serializer=serializers.UserProfilesSerializer(用户)
data=serializer.data
#data[“boats”]=sorted(data[“boats”])[:10]-需要更好的东西,因为它会使数据库过载
#数据[“文章”]=数据[“文章”][:10]
返回响应(数据)
问题是,如果我不想序列化和呈现“boatmodel_set”和“article_set”中与用户有关系的所有条目(可能有数百个),而是想将它们限制为“boatmodel_set”的[:10]个条目和“article_set”的[:10]个条目仅并仍然保持这些字段为只读,并且可以不调用source()和methodfield。有可能在某个地方覆盖它吗

谢谢


备注字段-请从范围中排除-不同主题。

您可以使用serializer field get方法并自行限制这些字段。以下是您的操作方法:

class UserProfileSrializer(serializers.Serializer):
定义初始化(self,*args,**kwargs):
self.user=kwargs.pop(“用户”,无)
serializers.Serializer.\uuuuu init\uuuuuu(self,*args,**kwargs)
boats=serializers.SlugRelatedField(many=True,source=“boatmodel\u set”,slug\u field=“boat\u name”,
只读(只读=真)
articles=serializers.StringRelatedField(many=True,source=“article\u set”,read\u only=True)
comment=serializers.StringRelatedField(many=True,source=“get\u comments”,read\u only=True)
def get_艇(自身、obj):
#像这样接近船只
船
船业有限公司=…#把你的船限制在这里
回程船务有限公司
def get_文章(自我、obj):
#访问像这样的文章
articles=obj.articles
articles_limited=…#在这里限制你的文章
归还物品有限公司