【问题标题】:Restricted set of nested fields in a django REST framework ModelSerializerdjango REST框架ModelSerializer中的一组受限嵌套字段
【发布时间】:2014-11-18 00:11:05
【问题描述】:

考虑以下序列化程序

class MyModelSerializer(serializers.ModelSerializer):
    class Meta:
        model = MyModel
        fields = ('id', 'account')
        depth = 1

account 字段指的是MyModel 中的ForeignKey,我想用这个序列化程序公开一些Account 字段,但不是全部。

如何指定只有account.nameaccount.email 应该被序列化?

【问题讨论】:

    标签: django django-rest-framework


    【解决方案1】:

    您可以通过创建自己的序列化程序来用作嵌套序列化程序来做到这一点。

    class AccountSerializer(serializers.ModelSerializer):
    
        class Meta:
            model = Account
            fields = ('name', 'email', )
    

    您最好创建专门的序列化程序,而不是依赖 Django REST 框架为您创建它们。默认情况下,自动创建的序列化程序包含模型上定义的所有字段。

    class MyModelSerializer(serializers.ModelSerializer):
        account = AccountSerializer()
    
        class Meta:
            model = MyModel
            fields = ('id', 'account', )
    

    您可以在Django REST Framework documentation 中找到有关嵌套序列化程序的更多信息。

    【讨论】:

    • 知道了。不过,扩展 ModelSerializer 以在 Django REST 框架中包含该功能会很棒。
    • 您必须重写 nested serializer is generated 的方式,它最终会比创建第二个(或第三个,或第四个...)序列化程序要多得多。
    猜你喜欢
    • 2014-10-08
    • 2014-11-09
    • 2016-11-09
    • 1970-01-01
    • 2015-05-15
    • 2014-11-30
    • 2016-05-03
    相关资源
    最近更新 更多