Django не может сериализовать объект из-за префикса _id

Я делаю программу, которая позволяет моему фронтенду посылать номер вопроса и название категории для получения вопроса из базы данных.

Однако, когда я пытаюсь сериализовать объект вопроса, чтобы отправить его обратно, сериализатор выдает ошибку.

Model.py

from django.db import models
from django.db import models
from django.contrib.auth.models import User


class Category(models.Model): #Might Change later
    CategoryTitle = models.TextField()

class Question(models.Model):
    questionText = models.TextField()
    QuestionType = models.TextField()
    questionScore = models.IntegerField()
    QuestionNist = models.TextField()
    Category = models.ForeignKey(Category, on_delete=models.CASCADE)

Serializer.py

from rest_framework import serializers
from .models import(Question)

class QuestionSerializer(serializers.ModelSerializer):
    class Meta:
        model = Question
        fields = ('id','questionText','QuestionType','questionScore','Category')

View.py

from django.http import JsonResponse
from django.core import serializers
from rest_framework.views import APIView
from django.http import HttpResponse
from .models import (Category, Question)
from django.contrib.auth.models import User
from .serializers import (QuestionSerializer, QuestionSender)
from rest_framework.response import Response as Rs

class questionRecive(APIView):
    QuestionSerializer = QuestionSerializer
    QuestionSender = QuestionSender

 def get(self, request):
    user = self.authcall(request)
    QuestionSenderInstance = self.QuestionSender(data=request.data)
    
    print(request.data)
    if QuestionSenderInstance.is_valid():
        print(QuestionSenderInstance.validated_data.get('Category'))
        CategoryRequested=QuestionSenderInstance.validated_data.get('Category')
        try:
            CategoryID = Category.objects.get(CategoryTitle=CategoryRequested)
        except:
            Response = HttpResponse("Invalid Category", content_type="text/plain")
            return Response

        try:
            QuestionObject = Question.objects.filter(Category=CategoryID).values()
            print(QuestionObject)
        except:
            Response = HttpResponse("No QUestions Within Category", content_type="text/plain")
            return Response


        questionnumber = QuestionSenderInstance.validated_data.get('QuestionNumber')
        print(questionnumber)
        SelectedQuestion = QuestionObject[questionnumber]
        print(f'{SelectedQuestion} HERE')
        SerializedQuestion = self.QuestionSerializer(data=SelectedQuestion)
        if SerializedQuestion.is_valid():
            print(SerializedQuestion.data)
            return Rs(SerializedQuestion.data)
        else:
            response = HttpResponse('Invalid Data')
            return response
    else:
        Response = HttpResponse('Invalid Data')
        return Response

Затем серализатор выдает ошибку:

'Category': [ErrorDetail(string='This field is required.', code='required')]}

Я полагаю, что это происходит потому, что поле модели называется Category, однако объект, похоже, имеет атрибут 'Category_id'. Есть идеи, как удалить префикс или иным образом решить проблему

Почему вы не используете поле QuestionNist в сериализаторе? Вот почему программа читает эту переменную и запрашивает поле Category.

что в этом плохого?

fields = ('_id','questionText','QuestionType','questionScore','Category')

обратите внимание на: _id

Вернуться на верх