我遇到了以下问题。假设我有一个简单的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字段上POST / GET一个Profile.id,但我们真的想要这个字段的附加信息,而不仅仅是ID。
有没有办法实现这个目标?例如,我们在POST上只提供Profile.PK并在GET请求中获取整个嵌套的序列化信息?
答案 0 :(得分:0)
我在他的评论中使用了neverwalkaloner链接的链接/方法解决了,如果有人遇到类似的问题我建议检查出来!