TypeError: answer() missing 2 required positional arguments: 'Опрос' и 'Ответы' - django
Я хочу указать одно из полей таблицы с помощью сериализаторов, но получаю следующую ошибку
Ошибка :
TypeError: answer() missing 2 required positional arguments: 'Опрос' и 'Ответы'
код : serializers.py
from rest_framework import serializers
from .models import Answers, Poll ,Options
from authUser.models import User
class pollSerializer(serializers.ModelSerializer):
class Meta:
model = Poll
fields = ["pollAnswer" ]
pollAnswer = serializers.SerializerMethodField(method_name="answer")
def answer(self , Options :Options , Poll:Poll , Answers :Answers ):
poll = Poll.objects.get(pk=Poll.pk)
polltype = poll["pollType"]
if polltype == 0 :
return Poll.pollAnswer
if polltype == 1:
options = Options.objects.filter(pollId=Poll.pk)
big = 0
oid = 0
for i in options:
if big < Answers.objects.filter(pollId=Poll.pk ,optionId=i.pk).count():
big = Answers.objects.filter(pollId=Poll.pk ,optionId=i.pk).count()
oid = i.pk
return oid
Как вы можете видеть в документации, SerializerMethodField
нужен метод, который принимает единственный аргумент: экземпляр модели для сериализации.
Метод сериализатора, на который ссылается аргумент method_name, должен принимать единственный аргумент (в дополнение к self), которым является сериализуемый объект. Он должен возвращать все, что вы хотите включить в сериализованное представление объекта.
Со:
class pollSerializer(serializers.ModelSerializer):
class Meta:
model = Poll
fields = ["pollAnswer" ]
pollAnswer = serializers.SerializerMethodField(method_name="answer")
def answer(self, poll: Poll):
...
Этот метод должен возвращать значение, которое может быть сериализовано, я не уверен, что вы можете вернуть объект.
Если вам нужен ответ, вы должны вернуть строку.