11
votes

Comment puis-je masquer une étiquette Django dans une forme Django personnalisée?

J'ai une forme personnalisée qui crée une entrée cachée d'un champ: xxx

Je dois faire ce petit tour pour "masquer" l'étiquette, mais ce que je veux faire est de supprimer de la forme. Je crée le formulaire comme celui-ci: xxx


1 commentaires

En dehors, n'oubliez pas la virgule suivante dans votre exclude tuple. Il devrait être exclure = ('mp_ordre',)


7 Réponses :


20
votes

Je ne recommanderais pas de supprimer l'étiquette car elle rend le formulaire inaccessible. Vous pouvez Ajouter une classe CSS personnalisée sur le champ et dans votre CSS Faites de cette classe invisible .

edit

J'ai manqué que l'entrée a été cachée si l'accessibilité n'est donc pas une préoccupation.

Vous pouvez rendre les champs de formulaire directement dans votre modèle : xxx


6 commentaires

Il ne s'agit que d'une entrée cachée de contrôle, je n'ai pas besoin de l'étiquette, j'utilise cette entrée cachée comme jeton.


Ok j'ai raté que le champ était caché. Désolé, je vais éditer la réponse ci-dessus.


Je pense que c'est la meilleure façon de le faire, mais ils devraient mettre en œuvre un moyen de supprimer des étiquettes dans une forme ... Merci!


Fonctionne avec Django 2.0 aussi.


Cela ne répond pas à la question imo


Ça a marché . Merci beaucoup !!!



0
votes

Sauf si j'ai mal compris votre question, il vous suffit d'ajouter le champ MP_E à l'exclusion du tuple sous la classe Meta. N'est-ce pas ce dont vous avez besoin? XXX


1 commentaires

Non, j'ai besoin d'une entrée cachée, ce que je n'ai pas besoin, c'est l'étiquette devant elle.



6
votes

Si vous utilisez le form.as_p ou form.as_table méthode, Django ne doit pas afficher les étiquettes pour vos champs cachés de toute façon, il n'ya donc pas besoin de changer le Étiquette dans votre __ init __ méthode. xxx

si vous êtes Personnalisation du modèle de formulaire , vous pouvez utiliser l'attribut champ.is_hiden pour vérifier si le champ est masqué. xxx

Vous pouvez également boucle sur des champs cachés et visibles séparément et omettez l'étiquette des champs cachés.


2 commentaires

La chose est que je veux utiliser le formulaire sans aucune personnalisation, changer de chose dans form.py, mais il semble qu'il est impossible de le faire


Comme je l'ai dit ci-dessus, Django ne montrera pas l'étiquette des champs cachés par défaut . Vous n'avez pas besoin de changer l'étiquette dans votre méthode __ init __ . Si l'étiquette est affichée, vous faites quelque chose dans votre point de vue ou votre modèle que vous n'avez pas inclus dans votre question.



13
votes

Maintenant, (ma version de Django est 2.1.4), vous pouvez résoudre de cette manière -> Modifier Forms.py Fichier:

password = forms.CharField(label=False)


0 commentaires

1
votes

Aller à votre fichier Forms.pypy et Ajouter une étiquette = false

comme Ci-dessous P>

name = forms.CharField(required=True, max_length=100, widget=forms.TextInput(attrs={'placeholder': 'Enter Name *'}), label=False)


1 commentaires

Label = False imprime false comme étiquette. Cela ne cache pas le nom de l'étiquette



4
votes

Vous devez donner false et cela fonctionnera:

self.fields['mp_e'].label = False


2 commentaires

Cela ne fonctionne pas, vous définissez une nouvelle valeur pour étiqueter


Comme indiqué par Ziyad Akmal, vous devez ajouter FALSE à l'option «Étiquette» dans votre définition de formulaire (regarder dans Forms.py)



2
votes

J'ai trouvé cela utile et cela fonctionne pour moi!

class CustomForm(forms.Form):
class Meta:
    ...  #other properties such as model, fields, widgets and help text
    labels = {
       'comment' : '',
    }


0 commentaires