I want to show a title and description from a db query in each form, but I don’t want it to be in a charfield, I want it to be html-formatted text.
sample template code:
{% for form, data in zipped_data %} <div class='row'> <div class='first_col'> <span class='title'>{{ data.0 }}</span> <div class='desc'> {{ data.1|default:'None' }} </div> </div> {% for field in form %} <div class='fieldWrapper' style='float: left; '> {{ field.errors }} {{ field }} </div> {% endfor %} {% endfor %}
Is this the most idiomatic way of doing this? Or, is there a way to add text that will not be displayed inside of a textarea or text input to my model:
class ReportForm(forms.Form): comment = forms.CharField()
?
Instead of zipping your forms with the additional data, you can override the constructor on your form and hold your title/description as instance-level member variables. This is a bit more object-oriented and learning how to do this will help you solve other problems down the road such as dynamic choice fields.
Then in your view code:
Adjust accordingly if you need these values to come from the database. Then in your template, you access the instance variables just like you do anything else, e.g.:
From the way you phrased your question, I think you probably have some confusion around the way Django uses Python class attributes to provide a declarative form API versus instance-level attributes that you apply to individual instances of a class, in this case your form objects.