Reputation: 11519
How do I remove the label that comes attached to the TextArea I am trying to use with Django? I'm trying to find ANY information about this issue but I cannot seem to find anything relating to my problem. This is what I'm doing in my code:
class CommentForm(forms.Form):
comment = forms.CharField(widget=forms.Textarea())
This is the HTML that it produces:
<label for="id_text">Text:</label>
<textarea id="id_text" rows="10" cols="40" name="text"></textarea>
That label is no good and I'd like a way to remove it. That code was produced via:
{{ form.as_p }}
(I removed the paragraph tags because they are irrelevant)
EDIT: I added the class CommentForm part for further clarification.
Anyone have any suggestions?
Upvotes: 17
Views: 25818
Reputation: 1
here is another solution that had worked for me with this
{% for field in form %} {{field.errors}} {% endfor %}Upvotes: 0
Reputation: 439
Not sure about old Django but u can now empty the form field labels in Meta for the new Django
class CustomForm(forms.Form):
class Meta:
... #other properties such as model, fields, widgets and help text
labels = {
'comment' : '',
}
Upvotes: 2
Reputation: 14990
Try this in your form:
def __init__(self, *args, **kwargs):
self.fields['comment'].label = ''
But for newer versions of django i prefer Iemonad's answer
Upvotes: 4
Reputation:
A quick-and-dirty solution would be to iterate through the form manualy (with {% for field in form %}) and handle the "problematic" field specially. You could also override the as_p/as_table methods if needed.
Upvotes: 0
Reputation: 24271
The Django documentation on customizing labels says it could be turned off with auto_id
argument to Form constructor:
f = ContactForm(auto_id=False)
Upvotes: 10
Reputation: 4198
This should work with the latest version (trunk) of django:
comment = forms.CharField(label="", help_text="", widget=forms.Textarea())
Hope that helps!
Upvotes: 36