diff --git a/reviewboard/static/rb/js/views/reviewRequestEditorView.js b/reviewboard/static/rb/js/views/reviewRequestEditorView.js
index 140d70e7a989b1efa5544c529fef1739681fc966..e260074c8f391f2712f057c3b202481cbc8a5e7b 100644
--- a/reviewboard/static/rb/js/views/reviewRequestEditorView.js
+++ b/reviewboard/static/rb/js/views/reviewRequestEditorView.js
@@ -396,6 +396,27 @@ RB.ReviewRequestEditorView = Backbone.View.extend({
         {
             fieldID: 'depends_on',
             fieldName: 'dependsOn',
+            autocomplete: {
+                fieldName: function(data) {
+                    return data.search.review_requests;
+                },
+                nameKey: 'id',
+                descKey: 'summary',
+                display_name: 'summary',
+                resourceName: 'search',
+                parseItem: function(item) {
+                    item.id = item.id.toString();
+                    item.display_name = item.summary;
+
+                    return item;
+                },
+                extraParams: {
+                    summary: 1
+                },
+                cmp: function(term, a, b) {
+                    return b.data.id - a.data.id;
+                }
+            },
             useEditIconOnly: true,
             formatter: function(view, data, $el) {
                 $el.html(view.urlizeList(
@@ -1232,19 +1253,28 @@ RB.ReviewRequestEditorView = Backbone.View.extend({
                 matchCase: false,
                 multiple: true,
                 parse: function(data) {
-                    var items = data[options.fieldName],
-                        itemsLen = items.length,
-                        parsed = [],
-                        value,
+                    var parsed = [],
+                        items,
+                        item,
                         i;
 
-                    for (i = 0; i < itemsLen; i++) {
-                        value = items[i];
+                    if (_.isFunction(options.fieldName)) {
+                        items = options.fieldName(data);
+                    } else {
+                        items = data[options.fieldName];
+                    }
+
+                    for (i = 0; i < items.length; i++) {
+                        item = items[i];
+
+                        if (options.parseItem) {
+                            item = options.parseItem(item);
+                        }
 
                         parsed.push({
-                            data: value,
-                            value: value[options.nameKey],
-                            result: value[options.nameKey]
+                            data: item,
+                            value: item[options.nameKey],
+                            result: item[options.nameKey]
                         });
                     }
 
@@ -1625,4 +1655,4 @@ RB.ReviewRequestEditorView = Backbone.View.extend({
 });
 
 
-})();
+})();
\ No newline at end of file
diff --git a/reviewboard/static/rb/js/views/tests/reviewRequestEditorViewTests.js b/reviewboard/static/rb/js/views/tests/reviewRequestEditorViewTests.js
index 36eb707cfb1ffe2c5addeca5fbb35e22f3e5e159..c55f9a6d719edcfff8c982195537325d85d6a2af 100644
--- a/reviewboard/static/rb/js/views/tests/reviewRequestEditorViewTests.js
+++ b/reviewboard/static/rb/js/views/tests/reviewRequestEditorViewTests.js
@@ -22,6 +22,9 @@ suite('rb/views/ReviewRequestEditorView', function() {
             '   <span id="field_bugs_closed"',
             '         data-field-id="bugs_closed"',
             '         class="field editable comma-editable"></span>',
+            '   <span id="field_depends_on"',
+            '         data-field-id="depends_on"',
+            '         class="field editable comma-editable"></span>',
             '   <span id="field_target_groups"',
             '         data-field-id="target_groups"',
             '         class="field editable comma-editable"></span>',
@@ -631,6 +634,42 @@ suite('rb/views/ReviewRequestEditorView', function() {
             securityTests();
         });
 
+        describe('Depends On', function() {
+            var field_children;
+
+            setupFieldTests({
+                fieldName: 'dependsOn',
+                jsonFieldName: 'depends_on',
+                selector: '#field_depends_on'
+            });
+
+            hasAutoCompleteTest();
+            hasEditorTest();
+            savingTest();
+
+            it('Formatting', function() {
+                reviewRequest.draft.set('dependsOn', [
+                    {
+                        id: '123',
+                        url: '/r/123/'
+                    },
+                    {
+                        id: '124',
+                        url: '/r/124/'
+                    }
+                ]);
+                editor.trigger('fieldChanged:dependsOn');
+
+                field_children = $field.children();
+                expect($field.text()).toBe('123, 124');
+                expect(field_children.eq(0).attr('href')).toBe('/r/123/');
+                expect(field_children.eq(1).attr('href')).toBe('/r/124/');
+            });
+
+            editCountTests();
+            securityTests();
+        });
+
         describe('Change Descriptions', function() {
             function closeDescriptionTests(options) {
                 beforeEach(function() {
