Python Django Rest框架中的to_representation()是否可以访问普通字段
使用Python Django Rest框架中的to_representation()是否可以访问普通字段,python,django,django-rest-framework,Python,Django,Django Rest Framework,使用表示法的文档有点短。Django Rest Framework 3.0+使用此方法更改API中数据的表示形式 这里是文档链接: 这是我目前的代码: from django.forms.models import model_to_dict class PersonListSerializer(serializers.ModelSerializer): class Meta: model = Person fields = ('foo', 'bar
表示法的文档有点短。Django Rest Framework 3.0+
使用此方法更改API中数据的表示形式
这里是文档链接:
这是我目前的代码:
from django.forms.models import model_to_dict
class PersonListSerializer(serializers.ModelSerializer):
class Meta:
model = Person
fields = ('foo', 'bar',)
def to_representation(self, instance):
return model_to_dict(instance)
当我编写这段代码时,它会返回模型中的所有字段,而不是我在上面的class Meta:fields
中指定的字段
是否可以在to_representation
方法中引用类Meta:fields
。在您的情况下,您甚至不需要将自定义为\u表示形式
。如果您需要自定义,我建议您先调用super,然后自定义输出:
class PersonListSerializer(serializers.ModelSerializer):
class Meta:
model = Person
fields = ('foo', 'bar',)
def to_representation(self, instance):
data = super(PersonListSerializer, self).to_representation(instance)
data.update(...)
return data
另外,如果您有兴趣了解它是如何工作的,那么在ModelSerializer.to_表示法中实际上并没有发生神奇的事情。事实上,它甚至没有实现该方法。它定期实施。Django模型的所有魔力实际上都发生在调用中,调用会考虑Meta.fields
参数…不确定您要做什么,但它们在源代码中调用self.\u readable\u fields
。