diff --git a/addons/web/static/src/js/views/basic/basic_model.js b/addons/web/static/src/js/views/basic/basic_model.js
index 64030cea866d50f1393600f8dd56f95727f955ba..cde2d2479ac3ccd9aa591d5d2504806f1ae66f58 100644
--- a/addons/web/static/src/js/views/basic/basic_model.js
+++ b/addons/web/static/src/js/views/basic/basic_model.js
@@ -2002,7 +2002,7 @@ var BasicModel = AbstractModel.extend({
             }
             _.extend(evalContext, {parent: parent.data});
         }
-        return _.extend({}, session.user_context, evalContext);
+        return _.extend({}, session.user_context, element.context, evalContext);
     },
     /**
      * Returns the list of field names of the given element according to its
diff --git a/addons/web/static/tests/views/form_tests.js b/addons/web/static/tests/views/form_tests.js
index d4ff7af9bb54f060f6e05e51dbc00a7b51737d3f..bedcf83b139fc3e75ae6f998d75c608549a8b051 100644
--- a/addons/web/static/tests/views/form_tests.js
+++ b/addons/web/static/tests/views/form_tests.js
@@ -4024,5 +4024,35 @@ QUnit.module('Views', {
 
         form.destroy();
     });
+
+    QUnit.test('action context is used when evaluating domains', function (assert) {
+        assert.expect(1);
+
+        var form = createView({
+            View: FormView,
+            model: 'partner',
+            data: this.data,
+            arch: '<form string="Partners">' +
+                    '<sheet>' +
+                        '<field name="trululu" domain="[(\'id\', \'in\', context.get(\'product_ids\', []))]"/>' +
+                    '</sheet>' +
+                '</form>',
+            res_id: 1,
+            viewOptions: {
+                context: {product_ids: [45,46,47]}
+            },
+            mockRPC: function (route, args) {
+                if (args.method === 'name_search') {
+                    assert.deepEqual(args.kwargs.args[0], ['id', 'in', [45,46,47]],
+                        "domain should be properly evaluated");
+                }
+                return this._super.apply(this, arguments);
+            },
+        });
+        form.$buttons.find('.o_form_button_edit').click();
+        form.$('div[name="trululu"] input').click();
+
+        form.destroy();
+    });
 });
 });