Question

J'utilise crispy_forms et FormHelper.J'ai un champ modèle déclaré comme suit :

active = models.BooleanField(default=True)

Et dans mon ModelForm, j'ai essayé les deux opérations suivantes dans ma mise en page :

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

qui ne fournissent pas tous les deux le résultat souhaité :

S'il te plait regarde lien d'image

Lors de l'utilisation de InlineCheckboxes, je ne vois pas la case à cocher et en utilisant uniquement Field, elle n'est pas formatée correctement.

S'il vous plaît, aidez

Était-ce utile?

La solution

Voici la lien à la section « Objets de mise en page Bootstrap » de la documentation Crispy Forms.

Cases à cocher en ligne:Il restitue un champ Django Forms.MultipleChoiceField à l'aide de cases à cocher en ligne.

InlineCheckboxes n'est pas approprié pour le type de champ de votre modèle.


Une façon simple d'obtenir ce que vous recherchez est d'utiliser PrependedText avec une chaîne vide pour le text argument.

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

En examinant la source, il apparaît qu'un champ booléen restitue par défaut le <input> étiquette à l'intérieur du <label> étiqueter.En utilisant le hack ci-dessus, « Actif » reste dans le <label> et le <input> est placé là où vous vous attendez :dans un <div> avec la classe CSS "control".Comparez les éléments suivants :

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>

Mise à jour

J'ai confirmé que cela est corrigé dans la branche dev de django-crispy-forms.

Référencez ce commit : 5c3a268

Et ce problème de github : #267

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top