diff --git a/biscuit/apps/chronos/forms.py b/biscuit/apps/chronos/forms.py
index 3af258cad1ede16001cfc9b94497648bc0ee854e..666eb0e6c12fcd064d37980ff333e91e1a4ec242 100644
--- a/biscuit/apps/chronos/forms.py
+++ b/biscuit/apps/chronos/forms.py
@@ -1,6 +1,7 @@
 from django import forms
 from django.db.models import Count
 from django.utils.translation import ugettext_lazy as _
+from django_select2.forms import ModelSelect2MultipleWidget, Select2Widget
 
 from biscuit.core.models import Person, Group
 
@@ -10,18 +11,21 @@ from .models import Room, LessonSubstitution, Subject, LessonPeriod
 class SelectForm(forms.Form):
     group = forms.ModelChoiceField(
         queryset=Group.objects.annotate(lessons_count=Count('lessons')).filter(lessons_count__gt=0),
-        label=_('Group'), required=False)
+        label=_('Group'), required=False, widget=Select2Widget)
     teacher = forms.ModelChoiceField(
         queryset=Person.objects.annotate(lessons_count=Count(
             'lessons_as_teacher')).filter(lessons_count__gt=0),
-        label=_('Teacher'), required=False)
+        label=_('Teacher'), required=False, widget=Select2Widget)
     room = forms.ModelChoiceField(
         queryset=Room.objects.annotate(lessons_count=Count(
             'lesson_periods')).filter(lessons_count__gt=0),
-        label=_('Room'), required=False)
+        label=_('Room'), required=False, widget=Select2Widget)
 
 
 class LessonSubstitutionForm(forms.ModelForm):
     class Meta:
         model = LessonSubstitution
         fields = ['week', 'lesson_period', 'subject', 'teachers', 'room', 'cancelled']
+        widgets = {
+            'teachers': ModelSelect2MultipleWidget(search_fields=['first_name__icontains', 'last_name__icontains', 'short_name__icontains'])
+        }
diff --git a/biscuit/apps/chronos/templates/chronos/edit_substitution.html b/biscuit/apps/chronos/templates/chronos/edit_substitution.html
index 47a62446b0a7f11c4960e93feddfa55b7c0c3452..88e3ac311ca27155dd668299f3be072b1cf961f7 100644
--- a/biscuit/apps/chronos/templates/chronos/edit_substitution.html
+++ b/biscuit/apps/chronos/templates/chronos/edit_substitution.html
@@ -3,6 +3,17 @@
 {% extends "core/base.html" %}
 {% load bootstrap4 font_awesome i18n %}
 
+{% block bootstrap4_extra_head %}
+  {{ block.super }}
+  {{ edit_substitution_form.media.css }}
+{% endblock %}
+
+{% block bootstrap4_extra_script %}
+  {{ block.super }}
+  {{ edit_substitution_form.media.js }}
+{% endblock %}
+
+
 {% block bootstrap4_title %}{% blocktrans %}Edit substitution{% endblocktrans %} - {{ block.super }}{% endblock %}
 
 {% block page_title %}{% blocktrans %}Edit substitution{% endblocktrans %}{% endblock %}
diff --git a/biscuit/apps/chronos/templates/chronos/tt_week.html b/biscuit/apps/chronos/templates/chronos/tt_week.html
index b90aec590511853e51e0fb410af77e7da4523dff..d289523f3fb9e80ece940e8975fce853f081832d 100644
--- a/biscuit/apps/chronos/templates/chronos/tt_week.html
+++ b/biscuit/apps/chronos/templates/chronos/tt_week.html
@@ -6,6 +6,12 @@
 {% block bootstrap4_extra_head %}
   {{ block.super }}
   <link rel="stylesheet" href="{% static 'css/chronos/timetable.css' %}" />
+  {{ select_form.media.css }}
+{% endblock %}
+
+{% block bootstrap4_extra_script %}
+  {{ block.super }}
+  {{ select_form.media.js }}
 {% endblock %}
 
 {% block bootstrap4_title %}{% blocktrans %}Timetable{% endblocktrans %} - {{ block.super }}{% endblock %}