gpt4 book ai didi

django - DRF PrimaryRelatedField 写入时和 NestedSerializer 读取时?

转载 作者:行者123 更新时间:2023-12-01 22:18:00 25 4
gpt4 key购买 nike

我正在使用嵌套序列化器。我需要 ProfileSerializer 为获取请求返回完整的相关 Project 对象,并且只考虑 id 切换(改变当前),就像 relatedPrimaryField behaiviour 对于 ProfileSerializer< 上的 post/put 请求。关于如何实现这一目标的任何解决方案?

class ProfileSerializer(serializers.ModelSerializer):
current = ProjectSerializer()
class Meta:
model = Profile
fields = ('function', 'current')

最佳答案

正如 Linova 所提到的,在不使用第三方库的情况下解决此问题的最简单方法是在序列化程序中声明两个单独的字段。你的嵌套序列化器 current会保持不变,但您会添加一个新的 PrimaryKeyRelatedField串行器。嵌套序列化程序应该是只读的,但相关字段不会是只读的。我通常将相关字段命名为 <field>_id按照惯例。

在 GET 请求中,嵌套序列化程序和 id字段将被返回,但对于 PUT 或 POST 请求只有 <field>_id需要指定。

class ProfileSerializer(serializers.ModelSerializer):
current = ProjectSerializer(read_only=True)
current_id = serializers.PrimaryKeyRelatedField(queryset=Projects.objects.all(), source='current')
class Meta:
model = Profile
fields = ('function', 'current', 'current_id')

关于django - DRF PrimaryRelatedField 写入时和 NestedSerializer 读取时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42833368/

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