gpt4 book ai didi

django - 在 JSON 输出中包含 get_absolute_url 值

转载 作者:行者123 更新时间:2023-12-04 14:11:03 25 4
gpt4 key购买 nike

刚刚进入 Django Rest Framework。

我有一个简单的示例运行,其中模型通过 REST API 呈现。模型中没有相关字段,只有一堆字符串。

展示 get_absolute_url() 的最简单方法是什么?将该模型的值转换为 JSON 输出?

我正在使用 serializers.HyperlinkedModelSerializer为进入具有相关领域的更复杂模型做准备。

最佳答案

方法 1 使用 SerializerMethodField :

您可以使用 SerializerMethodField 在您的序列化程序中添加 get_absolute_url()值到对象的序列化表示。

根据 SerializerMethodField docs:

This is a read-only field. It gets its value by calling a method on the serializer class it is attached to. It can be used to add any sort of data to the serialized representation of your object.



我们将定义一个方法 get_my_abslute_url()my_absolute_url我们的序列化器中的字段,它将对象的绝对 url 添加到序列化表示中。
class MyModelSerializer(serializers.ModelSerializer):

my_absolute_url = serializers.SerializerMethodField() # define a SerializerMethodField

def get_my_absolute_url(self, obj):
return obj.get_absolute_url() # return the absolute url of the object

方法 2 使用 URLField source参数:

您也可以使用 URLField并通过方法 get_absolute_url到它。这将调用方法 get_absolute_url并以序列化表示形式返回该值。

来自 source argument: 上的 DRF 文档

The name of the attribute that will be used to populate the field. May be a method that only takes a self argument, such as URLField('get_absolute_url'), or may use dotted notation to traverse attributes, such as EmailField(source='user.email').


class MyModelSerializer(serializers.ModelSerializer):

my_absolute_url = serializers.URLField(source='get_absolute_url', read_only=True)

我建议使用第二种方法 因为 DRF 在其文档中明确使用了这一点。

关于django - 在 JSON 输出中包含 get_absolute_url 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33016149/

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