KeyError at /api/rooms/create-grade/ 'grade'
Я ни капли не понимаю эту ошибку, я пытаюсь сделать основной метод create, но получаю KeyError
Это код serializer.py
class GradeCreateSerializer(serializers.ModelSerializer):
grade = serializers.ChoiceField(choices=GRADES, source="get_grade_display")
class Meta:
model = Grade
fields = ["grade"]
# ordering = ['-created_date']
def create(self, validated_data):
user = None
request = self.context.get("request")
if request and hasattr(request, "user"):
user = request.user
try:
perms = Perm.objects.get(user=user)
except:
perms = None
if user.role in ['OWNER', 'PARTNER']:
school = user.owns.first()
elif perms is not None:
if user.role == 'STAFF' and perms.can_crt_grade_class:
school = user.works
instance = Grade.objects.create(
grade=validated_data['grade'],
school=school,
)
instance.save()
return instance
что я делаю не так?
Я нашел решение моей проблемы, это было из-за grade = serializers.ChoiceField(choices=GRADES, source="get_grade_display")
это означает, что при использовании ChoiceField для определения вашего поля вам не нужно передавать source=""
так как поле использует выбор для его определения
Так что меняемся
grade = serializers.ChoiceField(choices=GRADES, source="get_grade_display")
to
grade = serializers.ChoiceField(choices=GRADES)
сделал трюк