python - 通过 Django REST Framework 中的多个参数反向 URL

标签 python django django-rest-framework

让我们采用通常的 CustomerOrder一对模特。

我们如何制作 HyperlinkedModelSerializerOrder url字段反向为类似 /customers/<customer_pk>/orders/<order_id>/ 的网址?

我想到了使用 lookup_fieldMeta类,但它似乎只接受一个字段。

谢谢你的帮助

最佳答案

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/

相关文章:

python - 您可以将JSON写入Snowflake阶段吗?

django - 如何从 Django 自定义中间件类返回 rest_framework.response 对象?

python - anaconda 找不到 pip3 并且不想使用 pip 或 pip2

python - 有没有办法使 Google Cloud Pub/Sub 架构字段成为可选字段?

python - Tkinter 托盘图标(winico、twapi、pywin32)

python - 为什么 print ("string", object) 会给出与 print(object) 不同的结果?

html - 如何在 .scss 文件中包含外部 CSS 文件作为类的规则?

python - 错误登录python CSRF

python - DRF : Serializer for heterogneous list of related models

Django REST framework : how to wrap the response with extra fields . ... 并在数据字段中提供当前响应