Amer Abdallah نشر 6 سبتمبر 2021 أرسل تقرير نشر 6 سبتمبر 2021 أريد إضافة نماذج جديدة form ديناميكيًا إلىformset في جانغو Django، بحيث عندما ينقر المستخدم على زر "إضافة" ، فإنه يقوم بتشغيل JavaScript الذي يضيف نموذجًا جديدًا (وهو جزء من formset) إلى الصفحة. كيف أقوم بهذا الأمر؟ 1 اقتباس
1 سامح أشرف نشر 6 سبتمبر 2021 أرسل تقرير نشر 6 سبتمبر 2021 يمكنك أن تقوم بهذا الأمر بطريقة سهلة من خلال jQuery ، كالتالي: {{ serviceFormset.creating_form }} <div class="form_set"> {% for f in serviceFormset.forms %} <table class='no_error form'> {{ f.as_table }} </table> {% endfor %} </div> <input type="button" value="Add New Form" id="add"> <script> $('#add').click(function() { addMoreForms('table.form:last', 'service'); }); </script> الكود السابق (في القالب template) يقوم بعرض نموذج جديد عند الضغط على زر Add New Form. ودالة addMoreForms، ستكون كالتالي: function addMoreForms(selector, type) { let newForm = $(selector).clone(true); let totalValue = $('#id_' + type + '-total_forms').val(); newForm.find(':input').each(function() { let name = $(this).attr('name').replace('-' + (totalValue-1) + '-', '-' + totalValue + '-'); let id_ = 'id_' + name; $(this).attr({'name': name, 'id': id_}).val('').removeAttr('checked'); }); newForm.find('label').each(function() { let newFor = $(this).attr('for').replace('-' + (totalValue - 1) + '-', '-' + totalValue + '-'); $(this).attr('for', newFor); }); total++; $('#id_' + type + '-total_forms').val(totalValue); $(selector).after(newForm); } هذه الدالة مفيدة بشكل كبير لأن طريقة إعدادها تسمح لك باستخدامها في جميع أنحاء التطبيق عندما ترغب في عرض المزيد من النماذج في formset. 1 اقتباس
0 Ali Haidar Ahmad نشر 6 سبتمبر 2021 أرسل تقرير نشر 6 سبتمبر 2021 إليك نسخة مبسطة من إجابة سامح باستخدام نموذج فارغ كقالب: <h3>My Services</h3> {{ serviceFormset.management_form }} <div id="form_set"> {% for form in serviceFormset.forms %} <table class='no_error'> {{ form.as_table }} </table> {% endfor %} </div> <input type="button" value="Add More" id="add_more"> <div id="empty_form" style="display:none"> <table class='no_error'> {{ serviceFormset.empty_form.as_table }} </table> </div> <script> $('#add_more').click(function() { var form_idx = $('#id_form-TOTAL_FORMS').val(); $('#form_set').append($('#empty_form').html().replace(/__prefix__/g, form_idx)); $('#id_form-TOTAL_FORMS').val(parseInt(form_idx) + 1); }); </script> 2 اقتباس
السؤال
Amer Abdallah
أريد إضافة نماذج جديدة form ديناميكيًا إلىformset في جانغو Django، بحيث عندما ينقر المستخدم على زر "إضافة" ، فإنه يقوم بتشغيل JavaScript الذي يضيف نموذجًا جديدًا (وهو جزء من formset) إلى الصفحة. كيف أقوم بهذا الأمر؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.