【问题标题】:How to get URL of model being serialized in Django REST Framework?如何获取在 Django REST Framework 中被序列化的模型的 URL?
【发布时间】:2021-01-10 19:55:45
【问题描述】:

我正在尝试使用如下所示的 Django REST 框架创建 API:

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

我在检索 expression 对象内的 url 字段时遇到问题。我正在尝试使用 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?

【问题讨论】:

    标签: django api rest serialization django-rest-framework


    【解决方案1】:

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

    url = serializers.SerializerMethodField()
    
    def get_url(self, expression):
        return "url_goes_here"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-21
      • 2014-01-05
      • 1970-01-01
      • 1970-01-01
      • 2015-07-24
      • 2013-11-27
      • 1970-01-01
      相关资源
      最近更新 更多