Как получить доступ к объекту из вложенного сериализатора? KeyError
Я хочу вернуть requestid и partsid после POST запроса. requestid уже отражен, но вызов partsid посылает мне KeyError. Как я могу получить доступ к этому объекту из отдельной таблицы, ссылающейся как вложенная?
Смотрите код для справки:
# models.py
class requestTable(models.Model):
requestid = models.AutoField(primary_key=True)
requestname = models.CharField(max_length=100, null=False)
class partsTable(models.Model):
partsid = models.AutoField(primary_key=True)
validatorid = models.ForeignKey(userTable, on_delete=models.CASCADE)
request = models.ForeignKey(requestTable, related_name='parts', on_delete=models.CASCADE)
# views.py
class RequestListCreateView(generics.ListCreateAPIView):
queryset = requestTable.objects.all()
serializer_class = RequestCreateSerializer
filter_backends = [DjangoFilterBackend, SearchFilter]
filterset_fields=['requesterid', 'requestid']
search_fields= ['requestname']
def create(self, request, *args, **kwargs):
write_serializer = RequestCreateSerializer(data=request.data)
write_serializer.is_valid(raise_exception=True)
instance = self.perform_create(write_serializer)
headers = self.get_success_headers(write_serializer.data)
return Response({"Request ID": write_serializer.data['requestid']}) #How can I show partsid here? When I add "Parts ID": write_serializer.data['partsid'], it sends me KeyError
#serializers.py
class PartSerializer(serializers.ModelSerializer):
class Meta:
model = partsTable
fields = ['partsid', 'validatorid']
class RequestCreateSerializer(serializers.ModelSerializer):
parts=PartSerializer(many=True)
class Meta:
model = requestTable
fields = ['requestid', 'requestname', 'parts']
def create(self, validated_data):
parts_data = validated_data.pop('parts')
request = requestTable.objects.create(**validated_data)
for part_data in parts_data:
partsTable.objects.create(request=request, **part_data)
return request
class RequestListSerializer(serializers.ModelSerializer):
parts=PartSerializer(many=True, read_only=True)
class Meta:
model = requestTable
fields = ['requestid', 'requestname', 'parts']