The default deck getValue() implementation just returns the PK from the choice HTML. RemoteAutocompleteWidget.getValue's implementation checks for a url too. If a url is found, it will post to that url and expect the pk to be in the response.

This is how autocomplete-light supports proposing values that are not there in the database until user selection.

var RemoteAutocompleteWidget = {
    getValue: function(choice) {
        var value ='value');

        if (typeof(value)=='string' && isNaN(value) && value.match(/^https?:/)) {
            $.ajax(this.autocompleteOptions.url, {
                async: false,
                type: 'post',
                data: {
                    'value': value
                success: function(text, jqXHR, textStatus) {
                    value = text;

  'value', value);

        return value;

$(document).bind('yourlabsWidgetReady', function() {

Instanciate decks with RemoteAutocompleteWidget as override for all widgets with autocomplete 'remote'.

    $('body').on('initialize', '.autocomplete-light-widget[data-bootstrap=rest_model]', function() {