【发布时间】:2018-02-28 12:33:22
【问题描述】:
我遇到了以下问题。假设我有一个简单的 Profile Serializer,它用作 DevelopmentPLanItemSerializer 中的嵌套 serializer,如下所示:
class SimpleProfileSerializer(serializers.ModelSerializer):
profile_image = serializers.SerializerMethodField()
class Meta:
model = um.Profile
fields = ('id', 'name', 'profile_image')
def profile_image(self, obj):
return obj.profile_image_url
class DevelopmentPlanItemSerializer(serializers.ModelSerializer):
id = serializers.ModelField(
model_field=dp.DevelopmentPlanItem()._meta.get_field('id'),
required=False,
allow_null=True
)
name = serializers.CharField(required=False, allow_null=True)
profile = SimpleProfileSerializer(required=False, allow_null=True)
class Meta:
model = dp.DevelopmentPlanItem
fields = ('id', 'title', 'name', 'profile')
现在,我使用required=False, allow_null=True 推销“个人资料”字段,因为该字段是可选的。但是,当我保存时,我仍然收到错误消息,因为 SimpleProfileSerializer 中的字段不允许为空。我可以通过删除嵌套的序列化程序来解决这个问题,这样我就只在 DevelopmentPlanItemSerialzer.profile 字段上发布/获取 Profile.id,但我们真的想要来自该字段的附加信息,而不仅仅是 ID。
有没有办法做到这一点?例如,我们在哪里只在 POST 上提供 Profile.PK 并在 GET 请求上获取整个嵌套的序列化信息?
【问题讨论】:
-
检查此方法:stackoverflow.com/a/45008793/641249 或在此处添加其他字段:stackoverflow.com/a/33048798/641249
-
成功了,谢谢!
标签: django django-rest-framework