со ссылкой на код ниже.Я пытаюсь создать новый экземпляр «Survey» при создании «Answer».Отправленный запрос POST: {"choice":123}
Первая проблема: «survey»: [«Это поле обязательно для заполнения».].Удаление «опроса» из полей сериализатора обходит это, но я не уверен, что это правильно.Обратите внимание, что и «Survey», и «Choice» имеют отношение «один ко многим» с «Answer» по внешнему ключу.
Вторая проблема: пользовательский метод создания в сериализаторе не вызывается, поскольку тестовая печать «HELLO»"Я вставил не выполнено и ничего не создано.
Застряли на это какое-то время, какие-нибудь идеи, ребята?Очень ценю это.
class AddAnswerView(viewsets.ViewSet):
def create(self, request, *args, **kwargs):
data = request.data.get(
"items") if 'items' in request.data else request.data
many = isinstance(data, list)
serializer = AnswerSerializer(data=data, many=many)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
class SurveySerializer(serializers.ModelSerializer):
class Meta:
model = models.Survey
fields = ('id',)
def create(self, validated_data):
return models.Survey.objects.create(**validated_data)
class AnswerSerializer(serializers.ModelSerializer):
class Meta:
model = models.Answer
fields = ('choice', 'survey')
def create(self, validated_data):
print('HELLO')
user = self.context['request'].user
new_survey = models.Survey.objects.create(user=user)
answer = models.Answer.objects.create(survey=new_survey,
**validated_data)
return answer