擅长:python、mysql、java
<p>基本字段无法执行此操作</p>
<p>您需要编写一个自定义序列化程序字段来支持它。下面是一个示例,您可能需要根据使用方式对其进行修改</p>
<p>此版本使用字段中的KWARG作为参数传递给函数。我建议您这样做,而不是使用<code>*args</code>,因为您将得到更合理的错误,并且在编写函数/字段定义时具有灵活性</p>
<pre><code>class MethodField(SerializerMethodField):
def __init__(self, method_name=None, **kwargs):
# use kwargs for our function instead, not the base class
super().__init__(method_name)
self.func_kwargs = kwargs
def to_representation(self, value):
method = getattr(self.parent, self.method_name)
return method(value, **self.func_kwargs)
</code></pre>
<p>在序列化程序中使用字段:</p>
<pre class="lang-py prettyprint-override"><code>class Simple(Serializer):
field = MethodField("get_val", name="sam")
def get_val(self, obj, name=""):
return "my name is " + name
>>> print(Simple(instance=object()).data)
{'field': 'my name is sam'}
</code></pre>