как изменить идентификатор формы в select2 django formset - PullRequest
0 голосов
/ 14 июля 2020

Мне нужно увеличить формы поля идентификатора для каждой формы

идентификатор по умолчанию, который django предоставляет id_formsetname_set-0-fieldName и 0, увеличивается один за другим

в моем случае с именем id_items_set-0-model и для вторая форма будет id_items_set-1-model, она будет отображаться в исходном коде элемента проверки из браузера, я использовал это для сценария loo

for (var i = 0; i < 10; i++){
    $("#id_items_set-"+i+"-model").select2();
 }

, но работал только для первой формы, я не хочу использовать django -select2

мой шаблон выглядит так

это мой фрагмент

<tbody class="tbody tb1 " id="form_set">
                    
                    {% for item in items.forms %}
                    <tr class="p-0 col-12">                    
                 <td class="">
                  <div class="col-12 p-0 mt-3 inp">
                {{item.price | add_class:'col-12 '}}
                
             </div>
             </td>
                
            <td class="">
            <div class="col-12 p-0 mt-3 inp">    
                 {{item.quantity | add_class:'col-12 '}}
            </div>
           </td>
            <td class="">
               <div class="col-12 p-0 mt-3 inp">
                {{item.model | add_class:'col-12 0model model' | attr:'id:id_items_set-0-model'}}
                                
                            </div>
                        </td>
                    </tr>
                    {% endfor %}
                </tbody>
                
<script type="text/javascript">
    $(function(){
        $('.tb1 tr:last').formset({
            prefix:'{{items.prefix}}',
            addText:'add',
            deleteText:'remove',
            addCssClass:'btn btn-success',
        });
    })
</script>

<script type="text/javascript">
        $(document).ready(function(){
            for (var i = 0; i < 10; i++){
                 $("#id_items_set-"+i+"-model").select2();
  }            
 })
</script>

работает только для моей первой формы и не влияет на другие формы? Есть ли что-то, что я сделал неправильно в части сценария, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 14 июля 2020

jquery.formset имеет атрибут added, мы можем вызывать функцию каждый раз, когда создается строка

<script type="text/javascript">
$(function(){
    $('.tb1 tr:last').formset({
        prefix:'{{items.prefix}}',
        addText:'add',
        deleteText:'remove',
        addCssClass:'btn btn-success',
        added:function($row){
                  $('.model').select2()
              }
      });
   })
</script>
0 голосов
/ 14 июля 2020

Я никогда не работал над django. Не могли бы вы попробовать это, пожалуйста. и если бы вы могли поделиться с нами ссылкой на реальный пример, если это не сработает

 $(()=>{
     let ids = document.querySelectorAll("[id=*'id_items_set']");
     ids.forEach((element)=>{
    $(element).select2();
    });
     });
...