diff --git a/opentech/apply/funds/forms.py b/opentech/apply/funds/forms.py
index 9af42b55d74016b555986744bf7a3b9663d09509..64e10f61b5a64205656077b296b3cd2a10058315 100644
--- a/opentech/apply/funds/forms.py
+++ b/opentech/apply/funds/forms.py
@@ -84,7 +84,8 @@ class UpdateReviewersForm(forms.ModelForm):
             field_name = 'reviewer_' + str(role.pk)
             self.fields[field_name] = forms.ModelChoiceField(
                 queryset=staff_reviewers,
-                widget=Select2IconWidget(attrs={'data-placeholder': 'Select a reviewer', 'icon': role.icon}),
+                widget=Select2IconWidget(attrs={
+                    'data-placeholder': 'Select a reviewer', 'role': role}),
                 required=False,
                 label=f'{role.name} Reviewer',
             )
diff --git a/opentech/apply/funds/templates/funds/includes/delegated_form_base.html b/opentech/apply/funds/templates/funds/includes/delegated_form_base.html
index 905e28b5906b7a93373c2644e353ca36c68bc7d8..a5e618774eae30212d3764c0f586e4f3a7f27db2 100644
--- a/opentech/apply/funds/templates/funds/includes/delegated_form_base.html
+++ b/opentech/apply/funds/templates/funds/includes/delegated_form_base.html
@@ -8,8 +8,8 @@
             {{ field.errors }}
 
             {# TODO: Add styles around icon later #}
-            {% if field.field.widget.attrs.icon %}
-                {% image field.field.widget.attrs.icon max-20x20 %}
+            {% if field.field.widget.attrs.role and field.field.widget.attrs.role.icon %}
+                {% image field.field.widget.attrs.role.icon max-20x20 %}
             {% endif %}
 
 
diff --git a/opentech/apply/funds/views.py b/opentech/apply/funds/views.py
index 727483682a35bf66e8fbdb405aa4c8b05e4cc745..b5c00f2475b9960ff26f927d6cac49aea52d4217 100644
--- a/opentech/apply/funds/views.py
+++ b/opentech/apply/funds/views.py
@@ -42,7 +42,6 @@ from .models import (
     ApplicationSubmission,
     AssignedReviewers,
     ApplicationRevision,
-    ReviewerRole,
     RoundsAndLabs,
     RoundBase,
     LabBase
@@ -289,18 +288,12 @@ class UpdateReviewersView(DelegatedViewMixin, UpdateView):
         # Save role reviewers ONLY, we saved others in UpdateReviewersForm.save()
         form.cleaned_data.pop('reviewer_reviewers')
         for key, user in form.cleaned_data.items():
-            role_pk = key[key.rindex("_") + 1:]
-            role = ReviewerRole.objects.get(pk=role_pk)
-            # Create the reviewer/role association to submission if it doesn't exist
-            submission_reviewer, created = AssignedReviewers.objects.get_or_create(
-                submission=form.instance, reviewer=user, role=role)
+            role = form.fields[key].widget.attrs['role']
+            # Create the reviewer/role association to submission if it doesn't exist, or update it
+            obj, created = AssignedReviewers.objects.update_or_create(
+                submission=form.instance, role=role, defaults={'reviewer': user})
             if created:
                 users_with_roles.append({ 'user': user, 'role': role})
-            # Delete any reviewer/role associations that existed previously
-            AssignedReviewers.objects.filter(
-                Q(submission=form.instance),
-                ~Q(reviewer=user),
-                Q(role=role)).delete()
 
         new_reviewers_external = set(AssignedReviewers.objects.filter(submission=form.instance, role__isnull=True))
         added_external = new_reviewers_external - old_reviewers_external
diff --git a/opentech/apply/funds/widgets.py b/opentech/apply/funds/widgets.py
index 95b81f6d83a40e5ad21d9d3ad91f5c55e82a1b58..ecb2e9edeef1cfdfa644acd3cf78104c986f43f7 100644
--- a/opentech/apply/funds/widgets.py
+++ b/opentech/apply/funds/widgets.py
@@ -25,6 +25,6 @@ class Select2MultiCheckboxesWidget(Select2MultipleWidget):
 class Select2IconWidget(Select2Widget):
     def __init__(self, *args, **kwargs):
         attrs = kwargs.get('attrs', {})
-        attrs.setdefault('icon', '')
+        attrs.setdefault('role', '')
         kwargs['attrs'] = attrs
         super().__init__(*args, **kwargs)