diff --git a/abilian/web/forms/__init__.py b/abilian/web/forms/__init__.py
index <HASH>..<HASH> 100644
--- a/abilian/web/forms/__init__.py
+++ b/abilian/web/forms/__init__.py
@@ -10,6 +10,7 @@ from flask.ext.babel import gettext as _, ngettext as _n
 
 from wtforms.fields import HiddenField
 from wtforms.fields.core import Field
+from wtforms_alchemy import model_form_factory
 from flask.ext.wtf.form import Form as BaseForm
 
 from abilian.core.logging import patch_logger
@@ -52,6 +53,8 @@ class Form(BaseForm):
     return any(self[f].flags.required for f in fields)
 
 
+ModelForm = model_form_factory(Form)
+
 ### PATCH wtforms.field.core.Field ####################
 _PATCHED = False
abilian/web/forms: add ModelForm based on .Form