لا يتم عرض مربع الاختيار BooleanField بشكل صحيح باستخدام Crispy_forms باستخدام bootstrap

StackOverflow https://stackoverflow.com//questions/22002861

سؤال

أنا أستخدم Crispy_forms وFormHelper.لدي حقل نموذجي تم تعريفه على أنه:

active = models.BooleanField(default=True)

وفي ModelForm الخاص بي، قمت بتجربة كلا الأمرين التاليين في التخطيط الخاص بي:

    self.helper.layout = Layout(
                    ...
        InlineCheckboxes('active'),
        Field('active'),
                    ...

وكلاهما لا يقدم النتيجة المرجوة:

لطفا أنظر رابط الصورة

أثناء استخدام InlineCheckboxes، لا أرى مربع الاختيار واستخدام الحقل فقط، ولم يتم تنسيقه بشكل صحيح.

الرجاء المساعدة

هل كانت مفيدة؟

المحلول

هنا هو وصلة إلى قسم "كائنات تخطيط Bootstrap" في مستندات Crispy Forms.

InlineCheckboxes:يعرض نموذج Django.حقلMultipleChoiceField باستخدام مربعات الاختيار المضمنة

InlineCheckboxes غير مناسب لنوع حقل النموذج الخاص بك.


إحدى الطرق المخادعة لتحقيق ما تبحث عنه هي استخدام PrependedText مع سلسلة فارغة ل text دعوى.

...
PrependedText('active', ''),
...

عند فحص المصدر، يبدو أن الحقل المنطقي يعرض الملف بشكل افتراضي <input> علامة داخل <label> بطاقة شعار.باستخدام الاختراق أعلاه، يبقى "نشط" في ملف <label> و ال <input> يتم وضعه حيث تتوقع:في <div> مع فئة CSS "التحكم".قارن ما يلي:

PrependedText('active', ''):

  <div id="div_id_active" class="form-group">
    <label for="id_active" class="control-label">Active</label>

    <div class="controls">
      <div class="input-group">
        <input type="checkbox" name="active" class="checkboxinput" id="id_active" />
      </div>
    </div>
  </div>

Field('active'):

  <div class="form-group">
    <div id="div_id_active" class="checkbox">
      <div class="controls">
        <label for="id_active" class=""><input type="checkbox" name="active" class=
        "checkboxinput checkbox" id="id_active" /> Active</label>
      </div>
    </div>
  </div>

تحديث

لقد أكدت أن هذا قد تم إصلاحه في فرع التطوير لأشكال Django-crispy.

الرجوع إلى هذا الالتزام: 5c3a268

وهذه مشكلة جيثب: #267

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top