Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.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
Javascript Django Rest框架嵌套序列化程序创建_Javascript_Django_Rest_Django Rest Framework - Fatal编程技术网

Javascript Django Rest框架嵌套序列化程序创建

Javascript Django Rest框架嵌套序列化程序创建,javascript,django,rest,django-rest-framework,Javascript,Django,Rest,Django Rest Framework,我用外键保存对象时遇到问题。 我有两个Django模型,比如(为了这个目的,我将简化它们,但重点仍然是): 和两个序列化程序,如: class model1SER(serializers.ModelSerializer): class Meta: model = Model1 fields = ['pk', 'name'] class model2SER(serializers.ModelSerializer): rel

我用外键保存对象时遇到问题。 我有两个Django模型,比如(为了这个目的,我将简化它们,但重点仍然是):

和两个序列化程序,如:

class model1SER(serializers.ModelSerializer):
    class Meta:
         model = Model1
         fields = ['pk', 'name']
         

class model2SER(serializers.ModelSerializer):
     rel = model1SER()
     class Meta:
          model = Model2
          fields = "all"

      def create(self, validated_data):
           model2 = Model2.objects.create(**validated_data)
           return model2
我使用axios post发布到modelViewSet,post JSON主体如下所示:
{'label':“xxxx”,'rel':{'pk':1,'name':“foo”}

尝试创建对象时,返回1)“rel\u id不为null…”“或无法分配“OrderedDict([('name':'foo')])”:“Model2.rel”必须是“Model1”实例

检查后,验证数据仅包含:
('rel',orderedict([('name','foo')))
pk

我也尝试过用id替换pk,添加id等等,但无法使用嵌套序列化程序保存对象

Model1序列化程序用于获取所有Model1对象的数据。
选择一个后,它将附加到Model2序列化程序的post数据中,因此序列化数据的结构保持不变

我是否可以更改create方法以某种方式获取已验证的_数据['rel']['pk']


谢谢

您可以使用该库进行嵌套创建,如Django Rest Framework序列化程序中所述。

您可以为Model2单独读取和写入序列化程序。 阅读可以用于get方法,写作可以用于post方法

对于get方法:

class model2ReadSER(serializers.ModelSerializer):
     rel = model1SER()
     class Meta:
          model = Model2
          fields = "all"
对于post方法:

class model2WriteSER(serializers.ModelSerializer):
     class Meta:
          model = Model2
          fields = "all"
并将Model1对象的id仅放在post数据中:

{'label': "xxxx", 'rel': 1}
{'label': "xxxx", 'rel': 1}