Задать вопрос
  • Как правильно реализовать автозаполнение поля?

    @nurzhannogerbek Автор вопроса
    Павел Аксенов: Cпасибо за ссылку. Правда говоря немного запутанный код в view sourse. Большая часть кода, как я понял, связано с custom-combobox. Меня же интересует простой сombobox. Можете пожалуйста подсказать, что конкретно нужно взять из этой ссылки?! Я так понял _createAutocomplete, но не совсем понял как его поставить в свой код.
  • Как правильно реализовать автозаполнение поля?

    @nurzhannogerbek Автор вопроса
    Павел Аксенов: Здравствуйте! Да, не работает. При выборе значения из первого поля (ChoiseField) в консоли выдает очень длинную url. У меня есть подозрения, что в word = request.GET.get('term', '') попадают все значения которые есть в СhoiseField, а не value выбронного элемента. Другого объяснения того, почему такой длинный url не знаю. Что вы думаете по этому поводу?

    Console:
    [09/May/2017 21:03:06] "GET /requirement_autocomplete/?term=%0A%D0%90%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%0A%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D1%82%D0%B8%D0%BA%0A%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%0A%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%0A%D0%A4%D0%B8%D0%BB%D0%B8%D0%B0%D0%BB%0A%D0%9D%D0%B5%D0%B7%D0%B0%D1%80%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9%20%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%0A HTTP/1.1" 200 2
  • Как создать автозаполнение для полей?

    @nurzhannogerbek Автор вопроса
    Павел Аксенов: Cпасибо большое еще раз! Простите, если достал вас вопросами. =)
  • Как создать автозаполнение для полей?

    @nurzhannogerbek Автор вопроса
    Павел Аксенов: Можно у вас еще одну вещь уточнить. Простите пожалуйста, если достал вас))) Я вот во view добавил такую запись, которая выводит ошибку под первым полем, если такая запись уже существует в БД. Проблема в том что автозаполнение не работает после того как выводится данная ошибка. Получается пользователь вводит в первое поле значение, выбирает из списка и нажимает кнопку submit. Выводится ошибка а значения в полях остаются. Что можете посоветовать по этому поводу? Очищать форму при ошибке в js? Я использовал form[0].reset();, но к сожалению не помогло.

    views.py:
    user_form.add_error('user_class', _('The same user class is already exist!'))


    JS:
    $(function () {
        var saveForm = function () {
            var form = $(this);
            $.ajax({
                url: form.attr("action"),
                data: form.serialize(),
                type: form.attr("method"),
                dataType: 'json',
                success: function (data) {
                    if (data.form_is_valid) {
                        $("#user-list").html(data.html_user);
                        $("#modal").modal("hide");
                    }
                    else {
                        $("#modal .modal-content").html(data.html_user_form);
                    }
                }
            });
            form[0].reset();
            return false;
        };
        $("#modal").on("submit", ".js-user-add-form", saveForm);
    });
  • Как создать автозаполнение для полей?

    @nurzhannogerbek Автор вопроса
    Павел Аксенов: CПАСИБО ВАМ ОГРОМНОЕ! =)
  • Как создать автозаполнение для полей?

    @nurzhannogerbek Автор вопроса
    Павел Аксенов: Cпасибо большое за ссылку! Можете проверить, что не так в я сделал? Во view добавил desc, далее js код, в котором во второе поле добавил desc: $("#user-symbol").html( ui.item.desc );.

    views.py:
    user_json['desc'] = user.user_symbol

    js:
    success: function (data) {
       $("#modal .modal-content").html(data.html_user_form);
       $("#user-class").autocomplete({
          source: "/user_autocomplete/",
          minLength: 2,
          select: function( event, ui ){
             $("#user-symbol").html( ui.item.desc );
             return false;
          }
       });
    }
  • Как создать автозаполнение для полей?

    @nurzhannogerbek Автор вопроса
    Павел Аксенов: Вы были правы, после применения данного стиля, появился список для автозаполнения. Видимо он был за модальным окном, в голову даже не пришло мне, что такое может быть. Спасибо!!! У меня все же остался один вопрос очень важный, который в самом посте указывал. Возможно ли как-то автозаполнить второе поле, в зависимости от выбранного значения в первом поле? Везде где смотрел работают лишь с одним полем. Получается в первом поле берутся значения user_class из модели UserDictionary, а во втором поле user_symbol. Есть ли у вас идеи по этому поводу?!
  • Как создать автозаполнение для полей?

    @nurzhannogerbek Автор вопроса
    Павел Аксенов: Как вы думаете почему не появляется список для автозаполнения? Хотя в url-ке выдает 200.
  • Как создать автозаполнение для полей?

    @nurzhannogerbek Автор вопроса
    Павел Аксенов: А почему вы считаете не совсем верным данное решение? Я поставил данный код. При вводе слова в первом поле не появляется список для автозаполнения, хотя в консоли Джанго пишет url-ки. Как-то странно.

    Сonsole:
    [06/May/2017 12:49:16] "GET /user_autocomplete/?term=%D0%90%D0%BD HTTP/1.1" 302 0
    [06/May/2017 12:49:16] "GET /user_autocomplete/?term=%D0%90%D0%BD HTTP/1.1" 200 423
  • Как создать автозаполнение для полей?

    @nurzhannogerbek Автор вопроса
    Павел Аксенов: Используется элемент modal из bootstrap 4. Cодержимое модального окна (modal-content) генерируется во view, а загружается с помощью ajax (функция loadForm).

    html:
    <div class="modal fade" id="modal">
       <div class="modal-dialog">
          <div class="modal-content">
    
           </div>
        </div>
    </div


    views.py:
    def user_add(request):
        data = dict()
        if request.method == 'POST':
            form = UserForm(request.POST)
            if form.is_valid():
                data['form_is_valid'] = True
                data['html_user'] = render_to_string('project/user_list.html', context)
            else:
                data['form_is_valid'] = False
        else:
            form = UserForm()
        context = {'form': form}
        data['html_user_form'] = render_to_string('project/user_add.html', context, request=request)
        return JsonResponse(data)


    JS:
    $(function () {
        var loadForm = function () {
            var btn = $(this);
            $.ajax({
                url: btn.attr("data-url"),
                type: 'get',
                dataType: 'json',
                beforeSend: function () {
                    $("#modal").modal("show");
                },
                success: function (data) {
                    $("#modal .modal-content").html(data.html_user_form);
                }
            });
        };
    
        $("#user-add-button").click(loadForm);
    });
  • Как создать автозаполнение для полей?

    @nurzhannogerbek Автор вопроса
    Павел Аксенов: Здравствуйте! Попробовал перенести поле для эксперимента в другое место в шаблоне и автозаполнение заработало как вы и предположили, но как же быть если это форма у меня должна находиться в модальном окне? Есть ли какой нибудь выход из данной ситуации?
  • Как создать автозаполнение для полей?

    @nurzhannogerbek Автор вопроса
    sim3x: При вводе в первом поле поидее должен выводиться url: user_autocomplete, но его нет. Консоль браузера пуста, что именно проверять в консоле браузера вы предлагаете?
  • Как создать автозаполнение для полей?

    @nurzhannogerbek Автор вопроса
    Dark Hole: Здравствуйте! Я делал на основе примеров и в них использовали HttpResponse. Уже не уверен в том что он мне нужен))) Что вы предлагаете?
  • Как создать автозаполнение для полей?

    @nurzhannogerbek Автор вопроса
    sim3x: У меня есть предположение, что JQuery UI не работает потому что я использую 3 версию JQuery. Что вы думаете на счет этого? Везде JQuery UI идет в связке с JQuery 1.7
  • Как создать автозаполнение для полей?

    @nurzhannogerbek Автор вопроса
    sim3x: Здравствуйте! При вводе в первом поле ничего не происходит. Не появляется список для autocomplete. Хотел узнать где совершил ошибку. А HttpResponse тут не подходит?
  • Как оставить галочку в сheckbox-ах?

    @nurzhannogerbek Автор вопроса
    Павел Аксенов: СПАСИБО ВАМ БОЛЬШОЕ!!! Очень интересная и полезная вещь FormSet оказалось. Буду сам дальше детально изучать её. Спасибо еще раз!
  • Как оставить галочку в сheckbox-ах?

    @nurzhannogerbek Автор вопроса
    Павел Аксенов: Я тут исследовал html.

    При использовании просто {{ formset }} в шаблоне генерируются множества скрытых полей:
    <div class="modal-body">
        <input id="id_form-TOTAL_FORMS" name="form-TOTAL_FORMS" value="5" type="hidden">
        <input id="id_form-INITIAL_FORMS" name="form-INITIAL_FORMS" value="5" type="hidden">
        <input id="id_form-MIN_NUM_FORMS" name="form-MIN_NUM_FORMS" value="0" type="hidden">
        <input id="id_form-MAX_NUM_FORMS" name="form-MAX_NUM_FORMS" value="0" type="hidden">
            
        <label for="id_form-0-is_visible">ПРОДУКТ 1.</label>
        <input checked="checked" id="id_form-0-is_visible" name="form-0-is_visible" type="checkbox">
        <input id="id_form-0-code" name="form-0-code" value="2043c5e4-6d8d-4c70-9971-dd1b2a7f47c7" type="hidden">
    
        <label for="id_form-1-is_visible">ПРОДУКТ 2.</label>
        <input id="id_form-1-is_visible" name="form-1-is_visible" type="checkbox">
        <input id="id_form-1-code" name="form-1-code" value="21d916ed-21b3-432f-bfb2-a38b19481b44" type="hidden">
    
        <label for="id_form-2-is_visible">ПРОДУКТ 3.</label>
        <input id="id_form-2-is_visible" name="form-2-is_visible" type="checkbox">
        <input id="id_form-2-code" name="form-2-code" value="398c3757-6997-4d19-8fae-18c6c45f9b83" type="hidden">
    
        <label for="id_form-3-is_visible">ПРОДУКТ 4.</label>
        <input id="id_form-3-is_visible" name="form-3-is_visible" type="checkbox">
        <input id="id_form-3-code" name="form-3-code" value="b984e6ba-3386-4235-ad2c-898528540977" type="hidden">
    
        <label for="id_form-4-is_visible">ПРОДУКТ 5.</label>
        <input id="id_form-4-is_visible" name="form-4-is_visible" type="checkbox">
        <input id="id_form-4-code" name="form-4-code" value="e2605779-8b21-443d-8cf0-5aec42669c63" type="hidden">
    </div>


    При последнем коде не генерируются скрытые поля:
    <div class="modal-body">
        <label for="id_form-0-is_visible">ПРОДУКТ 1.</label>
        <input checked="checked" id="id_form-0-is_visible" name="form-0-is_visible" type="checkbox">
            
        <label for="id_form-1-is_visible">ПРОДУКТ.</label>
        <input id="id_form-1-is_visible" name="form-1-is_visible" type="checkbox">
            
        <label for="id_form-2-is_visible">ПРОДУКТ 3.</label>
        <input id="id_form-2-is_visible" name="form-2-is_visible" type="checkbox">
            
       <label for="id_form-3-is_visible">ПРОДУКТ 4.</label>
       <input id="id_form-3-is_visible" name="form-3-is_visible" type="checkbox">
       <br>
            
       <label for="id_form-4-is_visible">ПРОДУКТ 5.</label>
       <input id="id_form-4-is_visible" name="form-4-is_visible" type="checkbox">
    </div>
  • Как оставить галочку в сheckbox-ах?

    @nurzhannogerbek Автор вопроса
    Павел Аксенов: Я попробовал в шаблоне указать {{ product_formset }} и заработало. СПАСИБО ВАМ ОГРОМНОЕ! Правда у меня опять ошибка валидации, когда я рендорил шаблон, что в нем не так? Можете еще раз подсказать пожалуйста? Отображается в форме все правильно но валидацию не проходит. Чувствую корява установил {{ product_form.is_visible }}, это так?

    {% for product_form in product_formset %}
         <label for="{{ product_form.is_visible.id_for_label }}">{{ product.is_visible.label }}</label>
         {{ product_form.is_visible }}
         <br>
    {% endfor %}
  • Как оставить галочку в сheckbox-ах?

    @nurzhannogerbek Автор вопроса
    Павел Аксенов: Попробовал ваш код c одним лишь изменением. Изменил на {{ product_form.is_visible }}, потому что {{ product_form.is_visible.field }} какую-то непонятную запись выводит вместо чекбоксов. У меня возникли две проблемы:

    1) У меня в базе 5 продуктов, выводятся 5 чексбоксов, но в конце 6-тым стоит вот такое: (откуда появилось непонятно)
    88f7571fab084ff6a67b81a5a5d85b11.PNG

    2) Поле name пытаюсь скрыть и сделал следующее, но выводит ошибку валидации. Я просмотрел через инструмент разработчика в браузере, поля name стоят. Что я упустил?

    forms.py:
    ProductFormSet = modelformset_factory(Product, fields=('name', 'is_visible',), widgets={'name': forms.HiddenInput()})


    html:
    {% for product_form in product_formset %}
                {{ product_form.name }}
                {{ product_form.is_visible }}<label for="{{ product_form.is_visible.id_for_label }}">{{ product_form.name.value }}</label><br>
    {% endfor %}


    views.py:
    def manage_products(request):
        data = dict()
        if request.method == 'POST':
            product_formset = ProductFormSet(data=request.POST, queryset=Product.objects.all())
            if product_formset.is_valid():
                product_formset.save()
                data['form_is_valid'] = True
                data['html_product'] = render_to_string('project/product_list.html', {'product_formset': product_formset})
            else:
                data['form_is_valid'] = False
        else:
            product_formset= ProductFormSet()
        data['html_manage_products_form'] = render_to_string('project/manage_products.html', {'product_formset': product_formset}, request=request)
        return JsonResponse(data)


    ERROR:
    Traceback (most recent call last):
      File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\handlers\exception.py", line 39, in inner
        response = get_response(request)
      File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\handlers\base.py", line 187, in _get_response
        response = self.process_exception_by_middleware(e, request)
      File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\handlers\base.py", line 185, in _get_response
        response = wrapped_callback(request, *callback_args, **callback_kwargs)
      File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\reversion\revisions.py", line 296, in do_revision_context
        return func(*args, **kwargs)
      File "C:\Users\Nurzhan\PycharmProjects\RMS\project\views.py", line 631, in manage_products
        if product_formset.is_valid():
      File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\forms\formsets.py", line 321, in is_valid
        self.errors
      File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\forms\formsets.py", line 295, in errors
        self.full_clean()
      File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\forms\formsets.py", line 342, in full_clean
        for i in range(0, self.total_form_count()):
      File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\forms\formsets.py", line 116, in total_form_count
        return min(self.management_form.cleaned_data[TOTAL_FORM_COUNT], self.absolute_max)
      File "C:\Users\Nurzhan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\forms\formsets.py", line 98, in management_form
        code='missing_management_form',
    django.core.exceptions.ValidationError: ['Данные управляющей формы отсутствуют или были повреждены']
  • Как оставить галочку в сheckbox-ах?

    @nurzhannogerbek Автор вопроса
    Павел Аксенов: А если само поле name добавить, но скрыть (hidden) в шаблоне и использовать лишь значения с поля name в сheckbox для is_visable. Вроде в таком случаи при валидации будут приходить два поля, разве нет? Только вот как взять только значение field.field_name.value?