Quand je définir une classe de formulaire Django semblable à ceci:Comment créer un formulaire Django qui affiche un libellé de case à cocher à droite de la case à cocher?
def class MyForm(forms.Form):
check = forms.BooleanField(required=True, label="Check this")
Il se développe à HTML qui ressemble à ceci:
<form action="." id="form" method=POST>
<p><label for="check">Check this:</label> <input type="checkbox" name="check" id="check" /></p>
<p><input type=submit value="Submit"></p>
</form>
Je voudrais l'élément d'entrée de case pour avoir une étiquette qui suit la case à cocher, pas l'inverse. Existe-t-il un moyen de convaincre Django de faire ça?
[Modifier]
Merci pour la réponse de Jonas - encore, alors qu'il résout le problème j'ai demandé (étiquettes de cases à cocher sont rendus à la droite de la case à cocher), il introduit un nouveau problème (tous les widgets les étiquettes sont affichées à la droite de leurs widgets ...)
Je voudrais éviter de surcharger _html_output() car il n'est évidemment pas conçu pour cela. La conception que je développerais consisterait à implémenter une méthode de sortie html de champ dans les classes Field, remplacer celle du champ booléen et utiliser cette méthode dans _html_output(). Malheureusement, les développeurs de Django ont choisi d'aller différemment, et j'aimerais travailler autant que possible dans le cadre existant. CSS ressemble à une approche décente, sauf que je ne connais pas assez de CSS pour le retirer ou même pour décider si j'aime cette approche ou non. De plus, je préfère un balisage qui ressemble encore à la sortie finale, au moins dans l'ordre de rendu. De plus, puisqu'il peut être raisonnable d'avoir plus d'une feuille de style pour un balisage particulier, faire ceci en CSS pourrait signifier devoir le faire plusieurs fois pour plusieurs styles, ce qui rend la CSS fausse.
[Modifier]
On dirait que je réponds à ma question ci-dessous. Si quelqu'un a une meilleure idée de comment faire cela, ne soyez pas timide.
Pouvez-vous fournir le code pour pretty_checkbox? Mon propre balisage préféré est
Je n'ai pas le code à portée de main pour le moment. Ce n'était pas très élaboré, si je me souviens bien - c'est simplement une fonction qui est alimentée par un petit fragment de code HTML, et permute l'étiquette et la saisie si l'entrée est une case à cocher. Le balisage est généré par Django, donc toute préférence que vous pourriez avoir est probablement non pertinente. –