相关疑难解决方法(0)

Django REST:嵌套对象添加创建(POST)而不仅仅是更新(PUT)

使用Django休息

下面是我如何使用serializer.py.

class ProfileSerializer(serializers.ModelSerializer):


    class Meta:
        model = Profile
        fields = ('id', 'name', 'active', 'type')
Run Code Online (Sandbox Code Playgroud)

类型是平面视图

然后我改变它,所以'type'嵌套在每个配置文件中,就像这样......

class TypeSerializer(serializers.ModelSerializer):
    class Meta:
        model = Type
        fields = ('id', 'name', 'active')

class ProfileSerializer(serializers.ModelSerializer):

    type = TypeSerializer()

    class Meta:
        model = Profile
        fields = ('id', 'name', 'active', 'type'')
Run Code Online (Sandbox Code Playgroud)

现在这种方法很完美,但我现在只能在配置文件详细信息中更新"类型",现在它是只读的.

如何在创建新配置文件时添加类型并仍保留此嵌套视图?

我希望我已经清楚地解释了这一点.

更新:

好的,我刚看过这个:

注意:嵌套序列化程序仅适用于只读表示形式,因为如果在更新实例时使用它们,则会出现模糊或不明显的行为.对于读写表示,您应始终使用FlatField子类之一来使用平面表示.

这是有道理的.所以我改成了....

type = serializers.PrimaryKeyRelatedField()
Run Code Online (Sandbox Code Playgroud)

这使它回到POST并工作,但这是一个耻辱,我不能用ID和名称代表'类型',这样对最终用户更有意义吗?

django django-rest-framework

9
推荐指数
3
解决办法
1万
查看次数

标签 统计

django ×1

django-rest-framework ×1