首页 > 解决方案 > 如何获取在 Django REST Framework 中被序列化的模型的 URL?

问题描述

我正在尝试使用 Django REST Framework 创建一个 API,如下所示:

[
    "expression": {
        "expression": e, 
        "url": e_url
    },
    "definition": d
]

我在检索对象url内的字段时遇到问题expression。我正在尝试使用HyperlinkedRelatedField但无法使其工作。我想指出这url不是我模型中的一个字段Expression

class ExpressionSerializer(serializers.ModelSerializer):

    url = serializers.HyperlinkedRelatedField(
        view_name="dictionary:expression",
        lookup_field="slug",
        read_only=True,
        many=False,
    )

    class Meta:
        model = Expression
        fields = ["url", "expression"]  

class DefinitionSerializer(serializers.ModelSerializer):

    expression = ExpressionSerializer(many=False)

    class Meta:
        model = Definition
        fields = ["expression", "definition"]

如何检索表达式的 URL?

标签: djangoapirestserializationdjango-rest-framework

解决方案


如果url不是Expression模型的一部分,那么您需要使用SerializerMethodField

url = serializers.SerializerMethodField()

def get_url(self, expression):
    return "url_goes_here"

推荐阅读