diff --git a/core/serializers.py b/core/serializers.py
index f6553ca524ec16366547341dc5baba2d504eba6f..f46507a58647e9e4bb5bf21705e71a84249c0725 100644
--- a/core/serializers.py
+++ b/core/serializers.py
@@ -1,5 +1,6 @@
 import logging
 
+from drf_dynamic_fields import DynamicFieldsMixin
 from rest_framework import serializers
 
 from core.models import (ExamType, Feedback, Student, Submission,
@@ -10,7 +11,11 @@ log = logging.getLogger(__name__)
 user_factory = GradyUserFactory()
 
 
-class ExamSerializer(serializers.ModelSerializer):
+class DynamicFieldsModelSerializer(DynamicFieldsMixin, serializers.ModelSerializer):
+    pass
+
+
+class ExamSerializer(DynamicFieldsModelSerializer):
 
     class Meta:
         model = ExamType
@@ -18,21 +23,21 @@ class ExamSerializer(serializers.ModelSerializer):
                   'pass_score', 'pass_only',)
 
 
-class FeedbackSerializer(serializers.ModelSerializer):
+class FeedbackSerializer(DynamicFieldsModelSerializer):
 
     class Meta:
         model = Feedback
         fields = ('text', 'score')
 
 
-class SubmissionTypeSerializer(serializers.ModelSerializer):
+class SubmissionTypeSerializer(DynamicFieldsModelSerializer):
 
     class Meta:
         model = SubmissionType
         fields = ('name', 'full_score', 'description', 'solution')
 
 
-class SubmissionSerializer(serializers.ModelSerializer):
+class SubmissionSerializer(DynamicFieldsModelSerializer):
     feedback = serializers.ReadOnlyField(source='feedback.text')
     score = serializers.ReadOnlyField(source='feedback.score')
     type_id = serializers.ReadOnlyField(source='type.id')
@@ -41,10 +46,11 @@ class SubmissionSerializer(serializers.ModelSerializer):
 
     class Meta:
         model = Submission
-        fields = ('type_id', 'type_name', 'text', 'feedback', 'score', 'full_score')
+        fields = ('type_id', 'type_name', 'text',
+                  'feedback', 'score', 'full_score')
 
 
-class StudentSerializer(serializers.ModelSerializer):
+class StudentSerializer(DynamicFieldsModelSerializer):
     name = serializers.ReadOnlyField(source='user.fullname')
     user = serializers.ReadOnlyField(source='user.username')
     exam = ExamSerializer()
@@ -55,7 +61,7 @@ class StudentSerializer(serializers.ModelSerializer):
         fields = ('name', 'user', 'exam', 'submissions')
 
 
-class SubmissionNoTextFieldsSerializer(serializers.ModelSerializer):
+class SubmissionNoTextFieldsSerializer(DynamicFieldsModelSerializer):
     score = serializers.ReadOnlyField(source='feedback.score')
     type = serializers.ReadOnlyField(source='type.name')
     full_score = serializers.ReadOnlyField(source='type.full_score')
@@ -65,7 +71,7 @@ class SubmissionNoTextFieldsSerializer(serializers.ModelSerializer):
         fields = ('type', 'score', 'full_score')
 
 
-class StudentSerializerForListView(serializers.ModelSerializer):
+class StudentSerializerForListView(DynamicFieldsModelSerializer):
     name = serializers.ReadOnlyField(source='user.fullname')
     user = serializers.ReadOnlyField(source='user.username')
     exam = serializers.ReadOnlyField(source='exam.module_reference')
@@ -76,7 +82,7 @@ class StudentSerializerForListView(serializers.ModelSerializer):
         fields = ('name', 'user', 'exam', 'submissions')
 
 
-class TutorSerializer(serializers.ModelSerializer):
+class TutorSerializer(DynamicFieldsModelSerializer):
     username = serializers.CharField(source='user.username')
     feedback_count = serializers.IntegerField(source='get_feedback_count',
                                               read_only=True)
diff --git a/grady/settings/default.py b/grady/settings/default.py
index 9b1b6e817f8b75c03f88077ccd33b0c6a4a4329e..066af8ec33d58aa0cdb0872630db058711d53c0c 100644
--- a/grady/settings/default.py
+++ b/grady/settings/default.py
@@ -40,6 +40,7 @@ INSTALLED_APPS = [
     'django_extensions',
     'rest_framework',
     'corsheaders',
+    'drf_dynamic_fields',
     'core',
 ]