【发布时间】:2023-04-08 05:09:01
【问题描述】:
我正在使用序列化程序从我的模型中提取特定对象,然后通过requests 将所述对象字段用作 URL 中的参数。
我没有收到任何错误,一切正常,但我认为它可以在服务器上进行更好的优化并提高效率。
serializer.py
class BucketListExtraDataSerializer(serializers.ModelSerializer):
bucket_return = serializers.SerializerMethodField()
bucket_sectors = serializers.SerializerMethodField()
class Meta:
model = Bucket
fields = ('id','stock_list','bucket_return','bucket_sectors')
def get_bucket_return(self, obj):
print(obj.stock_list)
if obj.stock_list:
symbols_unicode = (','.join(map(str, obj.stock_list)))
print(symbols_unicode)
postgrest_urls = f"http://localhost:3000/rpc/bucketreturn?p_stocks=%7B{symbols_unicode}%7D"
bucket_return = requests.get(postgrest_urls, headers={'Content-Type': 'application/json'}).json()
return bucket_return
def get_bucket_sectors(self, obj):
if obj.stock_list:
symbols_unicode = (','.join(map(str, obj.stock_list)))
postgrest_urls = f"http://localhost:3000/rpc/bucketsectors?p_stocks=%7B{symbols_unicode}%7D"
bucket_sectors = requests.get(postgrest_urls, headers={'Content-Type': 'application/json'}).json()
return bucket_sectors
我认为拥有多个 SerializerMethodField()'s 并不是最佳选择。这让我想知道是否应该将所有额外的请求 def_bucket_return + def_buket_sectors 转换为视图。
我怀疑如果用户有多个对象,将来事情会变得非常缓慢。
view.py
class BucketListExtraData(generics.ListAPIView):
permission_classes = [IsAuthenticated]
serializer_class = BucketListExtraDataSerializer
queryset = Bucket.objects.all()
免责声明:我发送请求的localhost:3000 API 也不是瓶颈问题。目前我特别询问我如何设置我的序列化程序和视图。
关于如何优化我的序列化程序并更好地查看以更快地检索和显示数据到前端有什么建议吗?
【问题讨论】:
标签: python django django-rest-framework django-views