34 lines
1.1 KiB
Python
34 lines
1.1 KiB
Python
from rest_framework import serializers
|
||
from .models import CareerTestResult
|
||
|
||
class CareerTestSubmitSerializer(serializers.Serializer):
|
||
"""Сериализатор для приёма ответов на тест"""
|
||
answers = serializers.JSONField()
|
||
ym_client_id = serializers.CharField(
|
||
required=False,
|
||
allow_null=True,
|
||
allow_blank=True,
|
||
max_length=64
|
||
)
|
||
|
||
def validate_answers(self, value):
|
||
# Проверка: должны быть ответы на q1-q24
|
||
required_keys = {f'q{i}' for i in range(1, 25)}
|
||
if not required_keys.issubset(value.keys()):
|
||
raise serializers.ValidationError("Не все вопросы заполнены")
|
||
return value
|
||
|
||
|
||
class CareerTestResultSerializer(serializers.ModelSerializer):
|
||
profile_display = serializers.CharField(source='get_profile_display', read_only=True)
|
||
|
||
class Meta:
|
||
model = CareerTestResult
|
||
fields = [
|
||
'id',
|
||
'profile',
|
||
'profile_display',
|
||
'top3_profiles',
|
||
'recommended_ege_sets',
|
||
'created_at',
|
||
] |