0
私は、次のDjangoのモデルを持っている:ジャンゴレストフレームワーク3.4.0、カスタムを持つビューセットは、(作成)と多対多の関係
class Task(models.Model):
'''Task needed to complete a goal'''
title = models.CharField(max_length=200)
class Issue(models.Model):
'''Issue from different forges'''
title = models.CharField(max_length=200, blank=True)
tasks = models.ManyToManyField(Task)
私は次のシリアライザがあります
class TaskSerializer(serializers.ModelSerializer):
'''Serializer to represent the Task model'''
class Meta:
model = Task
fields = ("id", "title")
class IssueSerializer(serializers.ModelSerializer):
'''Serializer to represent the issue model'''
tasks = TaskSerializer(read_only=True, many=True)
class Meta:
model = Issue
fields = ("title", "tasks")
を今私のPOSTリクエストは、次のいずれかです。
{
"id": null,
"title": "",
"tasks": [14]
}
問題のための空のタイトルで、私はこの1台のサーバ - を提供しますので、サイドだから私は、次のようにIssueViewSetの作成()を再定義する必要があります。
class IssueViewSet(viewsets.ModelViewSet):
'''ViewSet for viewing and editing Issue objects'''
queryset = Issue.objects.all().order_by('id')
serializer_class = IssueSerializer
def create(self, request):
serializer = IssueSerializer(data=request.data)
if serializer.is_valid():
issue = Issue(title='test', tasks=serializer.validated_data['tasks'])
issue.save()
return Response({'status': 'issue created'})
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
私は今では、次のエラーがあります。
File "/views.py", line 32, in create
issue = Issue(title='test', tasks=serializer.validated_data['tasks'])
KeyError: 'tasks'
をそして実際、serializer.validated_dataが持っていないようですタスクキー。私はシリアライザやcreate()を定義することが不足しています。