gpt4 book ai didi

python - Django Rest Framework 中的 to_representation() 可以访问普通字段吗

转载 作者:太空狗 更新时间:2023-10-29 17:11:34 28 4
gpt4 key购买 nike

关于使用 to_representation 的文档有点短。 Django Rest Framework 3.0+ 使用此方法来更改 API 中数据的表示。

这里是文档链接:

http://www.django-rest-framework.org/api-guide/serializers/#overriding-serialization-and-deserialization-behavior

这是我当前的代码:

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 方法中引用 class Meta: fields

最佳答案

DRF 的 ModelSerializer 已经具备处理该问题的所有逻辑。在您的情况下,您甚至不需要自定义 to_representation。如果你需要自定义它,我建议先调用 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_representation 中。事实上,它甚至没有实现那个方法。它定期实现 Serializer . Django 模型的所有魔法实际上都发生在 get_fields 中这叫get_field_names然后考虑 Meta.fields 参数...

关于python - Django Rest Framework 中的 to_representation() 可以访问普通字段吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31820389/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com