fredperk
fredperk

Reputation: 818

How to get URL of model being serialized in Django REST Framework?

I am trying to create an API using Django REST Framework that looks like this:

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

I am having problems retrieving the url field inside the expression object. I am trying to use HyperlinkedRelatedField but could not make it work. I want to point out that url is NOT a field in my Expression model.

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"]

How can I retrieve the URL for expression?

Upvotes: 0

Views: 517

Answers (1)

Horatiu Jeflea
Horatiu Jeflea

Reputation: 7404

If url is not part of the Expression model, then you need to use SerializerMethodField:

url = serializers.SerializerMethodField()

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

Upvotes: 1

Related Questions