Art*_*ler 2 python django django-rest-framework
让我们Customer以Orders对模型来使用通常的。
我们怎样才能使一个HyperlinkedModelSerializer的Order url领域反转像一个网址/customers/<customer_pk>/orders/<order_id>/?
我曾考虑lookup_field在Meta课堂上使用,但似乎只接受一个字段。
谢谢你的帮助
HyperlinkedModelSerializer在lookup_fieldDRF 2.0及更高版本中使用单个参数,因此像您一样,我无法使用此参数。
但是,通过一些技巧,我解决了这个问题,从而能够构建一个包含您所描述的反向URL ModelSerializer的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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1393 次 |
| 最近记录: |