让我们采用通常的 Customer
与 Order
一对模特。
我们如何制作 HyperlinkedModelSerializer
的 Order
url
字段反向为类似 /customers/<customer_pk>/orders/<order_id>/
的网址?
我想到了使用 lookup_field
在Meta
类,但它似乎只接受一个字段。
谢谢你的帮助
最佳答案
HyperlinkedModelSerializer
从 DRF 2.0 开始在 lookup_field
中使用单个参数,所以像你一样,我无法使用它。
然而,我在 this question 上学到了一些技巧我能够构建一个 ModelSerializer
,它有一个 url
字段,其中包含您描述的反向 URL。
class OrderSerializer(serializers.ModelSerializer):
# Fields, etc
url = serializers.SerializerMethodField('make_url')
class Meta:
model = Order
# Class info here as usual
def make_url(self, obj):
"""
Build URL for Order instance
"""
# Prepare the IDs you need for the URL reverse
kwargs = {
'customer_pk': obj.customer.id,
'order_id': obj.id,
}
url = reverse('api:single_order', kwargs=kwargs)
return self.context['request'].build_absolute_uri(url)
关于python - 通过 Django REST Framework 中的多个参数反向 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21047384/