Django - Невозможно получить поле Many to Many из набора Queryset

У меня есть следующий код:

exercises = Exercise.objects.filter(teacher=request.user.id).values('id', 'question', 'ans1', 'ans2', 'ans3', 'correct', 'unit', 'resol', 'theme', 'img')

Это работает нормально, но "тема" является полем Many to Many, формат возвращает { ..., theme: value } вместо { ..., theme: [value1, value2] }

Что нужно реализовать, чтобы получить формат desierd?

Заставил его работать, сделав следующее:

try:
    exercises = Exercise.objects.filter(teacher=request.user.id)
    ids = exercises.values_list('id', flat=True)

    reloaded_qs = Exercise.objects.all()
    reloaded_qs.query = pickle.loads(pickle.dumps(ids.query))
    exercise_serializer = ExerciseSerializer(exercises, many=True)

    if exercise_serializer.is_valid:
        for val, q in enumerate(reloaded_qs):
            exercise_serializer.data[val].update(q)

except BaseException as e:
    return JsonResponse({ 'v': False, 'm': str(e) }, safe=False)
 
return JsonResponse(exercise_serializer.data, safe=False)

Вы также можете использовать ModelSerializer...[DRF-doc] вот так:

class ExerciseModelSerializer(serializers.ModelSerializer):
    theme = serializers.PrimaryKeyRelatedField(many=True, queryset=Theme.objects.all())

    class Meta:
        model = Exercise
        fields = "__all__"
Вернуться на верх