Django RestFramework - POST 上的可选嵌套序列化程序 ID,GET 上的详细信息?



我遇到了以下问题。假设我有一个简单的配置文件序列化程序,它用作开发PLanItemSerializer中的嵌套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 请求的整个嵌套序列化信息?

我使用neverwalkaloner在他的评论中链接到的链接/方法解决了,如果有人遇到类似的问题,我建议检查一下!

相关内容

最新更新