Javascript Django Rest框架嵌套序列化程序创建
我用外键保存对象时遇到问题。 我有两个Django模型,比如(为了这个目的,我将简化它们,但重点仍然是): 和两个序列化程序,如: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
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}