Показать сообщение отдельно
  #23 (permalink)  
Старый 19.09.2016, 15:55
Новичок на форуме
Отправить личное сообщение для Amnesia Посмотреть профиль Найти все сообщения от Amnesia
 
Регистрация: 19.09.2016
Сообщений: 3

Ребят, спасибо за первые ответы. Постараюсь понять о чем вы =))
Как и написал выше, изначально изучаю вообще Питон с Джанго. Просто понял, что его средствами это не сделать, начал искать готовые решения по добавлению и т.п. Понял, что нужен Jquery и т.п. Который подгружает список(Говорят, грузить весь список сразу это не по фен шую, чтобы боты не парсили, учимся сразу делать хорошо)..
Повторюсь, так какя понял, смысл всего этого слегка не понятен вам.. Это не магазин, как таковой. А мини СРМ система, вместо XLS.
Я к примеру закупаю товар -> захожу добавить покупку.
Открывается страничка. В ней сразу сформирован номер(ид корзины) будущей в названии и заголовке страницы.
И пустая таблица, чтобы ее наполнить - > создал форму одну, в ней как и говорил, выбирается Бренд(руками), далее подгружается(на данный момент работает) список моделей этого бренда и другая информация(всего 5 полей) и есть кнопка Сохранить, которая добавляет значение в базу и обновляет страницу. Все работает.


Но представим ситуацию, что у меня 20 купленных вещей и мне надо их внести в таблицу.
Я нашел готовый скрипт:
$(document).ready(function() {
    function updateElementIndex(el, prefix, ndx) {
        var id_regex = new RegExp('(' + prefix + '-\\d+-)');
        var replacement = prefix + '-' + ndx + '-';
        if ($(el).attr("for")) $(el).attr("for", $(el).attr("for").replace(id_regex,
            replacement));
        if (el.id) el.id = el.id.replace(id_regex, replacement);
        if (el.name) el.name = el.name.replace(id_regex, replacement);
    }
    function deleteForm(btn, prefix) {
        var formCount = parseInt($('#id_' + prefix + '-TOTAL_FORMS').val());
        if (formCount > 1) {
            // Delete the item/form
            $(btn).parents('.item').remove();
            var forms = $('.item'); // Get all the forms
            // Update the total number of forms (1 less than before)
            $('#id_' + prefix + '-TOTAL_FORMS').val(forms.length);
            var i = 0;
            // Go through the forms and set their indices, names and IDs
            for (formCount = forms.length; i < formCount; i++) {
                $(forms.get(i)).children().children().each(function() {
                    updateElementIndex(this, prefix, i);
                });
            }
        } // End if
        else {
            alert("Вы не можете удалить единственную форму");
        }
        return false;
    }
    function addForm(btn, prefix) {
        var formCount = parseInt($('#id_' + prefix + '-TOTAL_FORMS').val());
        // You can only submit a maximum of 10 todo items
        if (formCount < 10) {
            // Clone a form (without event handlers) from the first form
            var row = $(".item:first").clone(false).get(0);
            // Insert it after the last form
            $(row).removeAttr('id').hide().insertAfter(".item:last").slideDown(300);

            // Remove the bits we don't want in the new row/form
            // e.g. error messages
            $(".errorlist", row).remove();
            $(row).children().removeClass('error');

            // Relabel/rename all the relevant bits
            $(row).children().children().each(function() {
                updateElementIndex(this, prefix, formCount);
                if ( $(this).attr('type') == 'text' )
                    $(this).val('');
            });

            // Add an event handler for the delete item/form link
            $(row).find('.delete').click(function() {
                return deleteForm(this, prefix);
            });
            // Update the total form count
            $('#id_' + prefix + '-TOTAL_FORMS').val(formCount + 1);
        } // End if
        else {
            alert("Sorry, you can only enter a maximum of ten items.");
        }
        return false;
    }
    // Register the click event handlers
    $("#add").click(function() {
        return addForm(this, 'form');
    });

    $(".delete").click(function() {
        return deleteForm(this, 'form');
    });
});

Который добавляет(пока максимум до 10) формы, по кнопке Добавить. И все этого естественно так же сохраняется по кнопке Сохранить.

Теперь осталось единственное, чтобы вот этого скрипт,
$(document).ready(function() {
    $("#id_form-0-buy_tabako_brand").on('change', function title() {
        var id = $(this).val();
        $.ajax({
            data: {'id': id},
            url: '/tabako/add_cart/brand/',
            type: 'get',
            success: function (data) {
                var html = ""
                for (var i = 0; i < data.length; i++) {
                    html += '<option value="'+i+'">' + data[i].fields.tabako_titles_title + '</option>'
                }
                $('#title').html(html);
            }
        });
    });
})
который работает с с первой формой, а именно отслеживает изменение поле Бренд(id_form-0-buy_tabako_brand). И при выборе другого подгружает другие модели в этой же форме.

Как сделать так, чтобы в других формах, скрипт видел ID"id_form-Инкремент-buy_tabako_brand" или Имя поле"id_form-инкремент-buy_tabako_brand" и менял значение модели соответствующего поля. Эти имена задает скрипт, который я указал первый в этом сообщении.

Как сделать по другому через куки(как вы говорите), если здесь вроде бы все должно строго соответствовать??

Спасибо
Ответить с цитированием