Установите значение для виджета Django 2 Admin Autocomplete, используя jQuery - PullRequest
0 голосов
/ 18 апреля 2020

Я пытаюсь добавить пользовательские логи c с jQuery в django представление администратора. Я хочу изменить значение некоторых полей выбора в моих табличных встроенных полях, когда значение «формула» Выбрать Изменение ввода.

enter image description here

У меня есть пробовал следующий код, но значения автозаполнения django admin не меняются.

    rowNumber = 0
    var ingredientInput = $('#id_formulaexplosioningredient_set-' + rowNumber + '-ingredient');
    // console.log('aaa', ingredient, rowNumber, ingredientInput, );
    console.log('select', ingredientInput.select2());
    console.log('djangoAdminSelect2', ingredientInput.djangoAdminSelect2());
    ingredientInput.djangoAdminSelect2().val(ingredient.ingredient.id.toString()).trigger('change');
    ingredientInput.select2().val(ingredient.ingredient.id.toString()).trigger('change');
    ingredientInput.val(ingredient.ingredient.id.toString()).trigger('change');

Как вы можете видеть, я пробовал 3 способа с помощью val () элемента. Val () плагина select2 и val () плагина djangoAmindSelect2 ().

Кто-нибудь может мне помочь и показать, что я делаю неправильно?

Спасибо!

1 Ответ

0 голосов
/ 23 апреля 2020

Мне удалось решить эту проблему. Проблема заключалась в том, что select использует ajax для извлечения данных, поэтому мне пришлось сначала создать опцию, а затем выбрать ее с помощью события select2: select. Я надеюсь, что это помогает кому-то.

 var newOption = new Option(ingredient.ingredient.name, ingredient.ingredient.id, true, true);
 ingredientInput.append(newOption).trigger('change');
 // manually trigger the `select2:select` event
 ingredientInput.trigger({
      type: 'select2:select',
      params: {
      data: {
        text: ingredient.ingredient.name,
        id: ingredient.ingredient.id.toString(),
      }
    }
 });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...