Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django DRF:为同一序列化程序上的每个CRUD操作分离字段_Django_Django Rest Framework - Fatal编程技术网

Django DRF:为同一序列化程序上的每个CRUD操作分离字段

Django DRF:为同一序列化程序上的每个CRUD操作分离字段,django,django-rest-framework,Django,Django Rest Framework,我有一个像这样的序列化程序 class MySerializer(serializers.ModelSerializer): class Meta: model = MyModel fields = ('A', 'B') # 'C' is mandatory to create the object but dont include it on GET def create(self, validated_data):

我有一个像这样的序列化程序

class MySerializer(serializers.ModelSerializer):

    class Meta:
        model = MyModel
        fields = ('A', 'B')   
        # 'C' is mandatory to create the object but dont include it on GET

    def create(self, validated_data):
        # validated_data contains C ...
        instance = MyModel(**validated_data)
        print instance.__dict__  # C is None !?!?!
        instance.save()
        return instance
  • 在GET请求之后返回资源时,我只希望每一行(对象)使用'a'和'B'
  • 当我在POST请求之后创建资源时,我必须包含一个强制性的第三个属性'C'
视图正确地完成了它的工作,并在
验证的\u数据中传递C,但当我创建
MyModel
时,它最终没有C值,如上图所示

如果我在
字段中添加了“C”
元组
,那么一切都正常

有没有明智的方法来区分这两种情况?编写多个序列化程序(以便每个序列化程序定义不同的字段)对我来说太难看了。


拉米尔是对的。我非常想念那栋房子。最后,精确的解决方案是:

class MySerializer(serializers.ModelSerializer):
    class Meta:
        model = MyModel
        fields = ('A', 'B', 'C')
        extra_kwargs = {'C': {'write_only': True}}

如果我没有在
字段中包含'C',它就不会传入
验证的\u数据

Ramiel是正确的。我非常想念那栋房子。最后,精确的解决方案是:

class MySerializer(serializers.ModelSerializer):
    class Meta:
        model = MyModel
        fields = ('A', 'B', 'C')
        extra_kwargs = {'C': {'write_only': True}}

如果我没有在
字段中包含“C”
它没有传入
验证数据

如果我理解正确,你可以在Meta中使用DRF extra_kwargs,如图所示。如果我理解正确,你可以在Meta中使用DRF extra_kwargs,如图所示。非常感谢Ramiel。这就是我需要的。我还需要在
字段
中包含id,以便存在于
验证的\u数据中
。由于某种原因,当我删除所有.pyc文件时,先前包含任何内容的已验证_数据的行为不再是这种情况。我把最后的准确答案贴在下面,非常感谢你,拉米尔。这就是我需要的。我还需要在
字段
中包含id,以便存在于
验证的\u数据中
。由于某种原因,当我删除所有.pyc文件时,先前包含任何内容的已验证_数据的行为不再是这种情况。我把最后的确切答案贴在下面