gpt4 book ai didi

python - Django 休息框架 : How to add a custom field to the response of the GET request?

转载 作者:太空狗 更新时间:2023-10-30 01:06:22 24 4
gpt4 key购买 nike

我是 DRF 的新手,刚刚开始构建 API。

我有一个名为 Shop 的模型。我有两个不同用户类型的用户:CustomerSupplier

  1. 我想在 GET 请求 /shops/id/ 的响应中添加一个自定义字段 distance,它表示提交请求的客户之间的距离以及对应的店铺。
  2. 我认为我不能使用SerializerMethodField,因为该方法的值不仅取决于对象本身。
  3. 我不想为所有 GET 请求添加此自定义字段,相反,当提交请求的用户是 客户 时,我需要添加它。

考虑到上述限制,我应该如何将自定义字段添加到请求的响应中?执行此操作的最佳方法是什么?

最佳答案

您可以定义一个距离 SerializerMethodField ,然后使用序列化程序的 context 访问当前用户位置。然后使用当前用户位置和商店位置计算距离。

class ShopSerializer(serializers.ModelSerializer):

distance = serializers.SerializerMethodField()

class Meta:
model = Shop
fields = (.., 'distance')

def get_distance(self, obj):
current_user = self.context['request'].user # access current user
user_location = current_user.location

distance = <compute distance using obj.location and user_location>
return distance

关于python - Django 休息框架 : How to add a custom field to the response of the GET request?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37943339/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com