Pergunta

Estou usando crispy_forms e FormHelper.Eu tenho um campo de modelo declarado como:

active = models.BooleanField(default=True)

E no meu ModelForm, tentei o seguinte no meu Layout:

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

que ambos não fornecem o resultado desejado:

Por favor, veja link da imagem

Ao usar InlineCheckboxes, não vejo a caixa de seleção e usando apenas Field, ela não está formatada corretamente.

Por favor ajude

Foi útil?

Solução

Aqui está o link para a seção "Objetos Bootstrap Layout" dos documentos do Crispy Forms.

Caixas de seleção embutidas:Ele renderiza um campo Django Forms.MultipleChoiceField usando caixas de seleção embutidas

InlineCheckboxes não é apropriado para o tipo de campo do seu modelo.


Uma maneira hackeada de conseguir o que você procura é usar PrependedText com uma string vazia para o text argumento.

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

Examinando a fonte, parece que um campo booleano por padrão renderiza o <input> etiqueta dentro do <label> marcação.Usando o hack acima, 'Ativo' permanece no <label> e a <input> é colocado onde você esperaria:em um <div> com classe CSS "controle".Compare o seguinte:

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>

Atualizar

Eu confirmei que isso foi corrigido no branch dev do django-crispy-forms.

Faça referência a este commit: 5c3a268

E este problema do github: #267

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top