Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django REST序列化程序,如何添加额外字段并进行设置_Python_Django_Serialization_Django Rest Framework - Fatal编程技术网

Python Django REST序列化程序,如何添加额外字段并进行设置

Python Django REST序列化程序,如何添加额外字段并进行设置,python,django,serialization,django-rest-framework,Python,Django,Serialization,Django Rest Framework,我需要你的帮助,扩展类超出了我目前的Python技能 Django3.1和DjangoREST框架 我想将“detail_url”字段添加到VideoSerializer中,并根据模型上的现有字段设置其值。“detail_url”未在模型中定义,我希望在调用view时动态生成它。我想,序列化程序是最好的地方 多谢各位 序列化程序.py from rest_framework import serializers from django.urls import reverse from main.

我需要你的帮助,扩展类超出了我目前的Python技能

Django3.1和DjangoREST框架

我想将“detail_url”字段添加到VideoSerializer中,并根据模型上的现有字段设置其值。“detail_url”未在模型中定义,我希望在调用view时动态生成它。我想,序列化程序是最好的地方

多谢各位

序列化程序.py

from rest_framework import serializers
from django.urls import reverse
from main.models import Video


class VideoSerializer(serializers.ModelSerializer):
    detail_url = serializers.URLField()

    class Meta:
        model = Video
        fields = ['uuid', 'url', 'title', 'thumbnail_url', 'detail_url']
        # fields = '__all__'
    
    detail_url = reverse('video_detail', args=[model.uuid]) # <- this is the part I dont know where to declare
如果要添加作为方法结果的字段,则应使用

class VideoSerializer(serializers.ModelSerializer):

    ...

    detail_url = serializers.SerializerMethodField()

    def get_detail_url(self, obj):
        return reverse('video_detail', obj.uuid)

serializers.SerializerMethodField()
class VideoSerializer(serializers.ModelSerializer):

    ...

    detail_url = serializers.SerializerMethodField()

    def get_detail_url(self, obj):
        return reverse('video_detail', obj.uuid)