Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.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
Django rest framework 用一个方法序列化两个值_Django Rest Framework_Django Serializer - Fatal编程技术网

Django rest framework 用一个方法序列化两个值

Django rest framework 用一个方法序列化两个值,django-rest-framework,django-serializer,Django Rest Framework,Django Serializer,我有一个带有两个字段的序列化程序,如下所示: first_installations_date = serializers.SerializerMethodField() sec_installations_date = serializers.SerializerMethodField() def get_first_installation_date(self, obj): return self._extract_date(obj, key="first") def get_f

我有一个带有两个字段的序列化程序,如下所示:

first_installations_date = serializers.SerializerMethodField()
sec_installations_date = serializers.SerializerMethodField()

def get_first_installation_date(self, obj):
    return self._extract_date(obj, key="first")

def get_first_installation_date(self, obj):
    return self._extract_date(obj, key="sec")
这两种方法都是相同的,只是有点不同。 现在,我想知道,对于重构代码,是否有可能有两种方法:

first_installations_date = serializers.SerializerMethodField(source="get_installation_date", key="first")
sec_installations_date = serializers.SerializerMethodField(source="get_installation_date", key="sec")

def get_installation_date(self, obj, key):
   return self._extract_date(obj, key)

不,除非您创建自定义字段,否则无法按您想要的方式进行

但是这个呢?如果你真的需要像那样“重构”

first_installations_date = serializers.SerializerMethodField()
sec_installations_date = serializers.SerializerMethodField()

def _get_installation_date(self, obj, key):
   return self._extract_date(obj, key)

def get_first_installations_date(self, obj):
    return self._get_installation_date(obj,key="first")

def get_sec_installations_date(self, obj):
    return self._get_installation_date(obj, key="sec")