부트스트랩을 사용하여 Crispy_forms로 BooleanField 확인란이 올바르게 렌더링되지 않습니다.

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

문제

나는 Crispy_forms와 FormHelper를 사용하고 있습니다.다음과 같이 선언된 모델 필드가 있습니다.

active = models.BooleanField(default=True)

그리고 내 ModelForm에서는 레이아웃에서 다음을 모두 시도했습니다.

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

둘 다 원하는 결과를 제공하지 않습니다.

참조하세요 이미지 링크

InlineCheckboxes를 사용하는 동안 확인란이 표시되지 않고 Field만 사용하면 형식이 올바르게 지정되지 않습니다.

도와주세요

도움이 되었습니까?

해결책

여기는 링크 Crispy Forms 문서의 "부트스트랩 레이아웃 개체" 섹션을 참조하세요.

인라인체크박스:인라인 체크박스를 사용하여 Django form.MultipleChoiceField 필드를 렌더링합니다.

InlineCheckboxes는 모델의 필드 유형에 적합하지 않습니다.


당신이 찾고있는 것을 달성하는 해킹 방법은 다음을 사용하는 것입니다. PrependedText 빈 문자열을 사용하여 text 논쟁.

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

소스를 조사해 보면 기본적으로 부울 필드가 <input> 태그 내부 <label> 꼬리표.위의 해킹을 사용하면 'Active'가 <label> 그리고 <input> 예상할 수 있는 위치에 배치됩니다.안에 <div> "control" 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-forms의 dev 브랜치에서 이 문제가 수정되었음을 확인했습니다.

이 커밋을 참조하세요. 5c3a268

그리고 이 github 문제는 다음과 같습니다. #267

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top