Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.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框架中的to_representation()是否可以访问普通字段_Python_Django_Django Rest Framework - Fatal编程技术网

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