diff --git a/basetheme_bootstrap/views.py b/basetheme_bootstrap/views.py
index b645adb2dcde9499e5189fdee4aad5fa5f80ebfe..e15b93570e5d9723a9e4ddfaedb74eaa2ec53a94 100644
--- a/basetheme_bootstrap/views.py
+++ b/basetheme_bootstrap/views.py
@@ -223,15 +223,19 @@ def account_detail(request):
     else:
         is_posted = request.method == 'POST'
         pref = klass.get_for_user(user=request.user)
+        widgets_dict = dict(
+            (f.name, widgets.CheckboxSelectMultiple()) for f in pref._meta.get_fields() if f.many_to_many)
         form_prefs = forms.modelform_factory(
             klass,
-            fields=list(klass.get_allowed_fields()),
+            fields=list(pref.get_allowed_fields()),
+            widgets=widgets_dict,
         )(instance=pref, data=request.POST if is_posted else None)
         if is_posted and form_prefs.is_valid():
             form_prefs.save()
             form_prefs = forms.modelform_factory(
                 klass,
-                fields=list(klass.get_allowed_fields()),
+                fields=list(pref.get_allowed_fields()),
+                widgets=widgets_dict,
             )(instance=klass.get_for_user(user=request.user))
         # dirty patch for time field (don't know why django doesn't express the correct type by default)
         for f in form_prefs.fields.values():