class OrganizationItemForm(AuditModelForm):
selected = forms.BooleanField()
extraRequired = forms.BooleanField(widget=forms.HiddenInput)
multiLineInfo = forms.BooleanField(widget=forms.HiddenInput)
def __init__(self, *args, **kwargs):
super(AuditModelForm, self).__init__(*args, **kwargs)
if self["multiLineInfo"].value():
self.fields["descr"].widget = forms.Textarea(attrs={"class":"descriptionEdit"})
else:
self.fields["descr"].widget = forms.TextInput(attrs={"class":"itemDescrEdit"})
self.fields["descr"].required = self["extraRequired"].value()
class Meta:
model = OrganizationItem
I use this as a single checkbox entry that could optionally have either a single line edit, multi-line edit, or no text box at all
The applicable section of the template looks like this:
<ul>
{% for item in cat.items %}
<li><label>{{ item.form.selected }} {{ item.label }}</label>
{% if item.form.extraRequired.value or item.descrLabel %}
{% if item.form.multiLineInfo.value %}
<br>
{% else %}
–
{% endif %}
<span class="listItemLabel{% if item.form.extraRequired.data %} required{% endif %}">{{ item.descrLabel }}</span>
{% if item.form.multiLineInfo.value %}
<br>
{% else %}
{% endif %}
{{ item.form.descr }}
{% else %}
{{ item.form.descr.as_hidden }}
{% endif %}
{{ item.form.extraRequired }}
{{ item.form.multiLineInfo }}
</li>
{% endfor %}
</ul>
Keep in mind, this is a work in progress. I've not integrated the error output yet. Right now my problem is that if I simply click submit to test all of the error conditions, the value of the hidden fields is a string. This seems to be because to_python is only called for the cleaned value. The cleaned data is only available after the form passes validation.
What is the best practice for carrying data like this in a form and using it in the templates to govern conditionals?
-- You received this message because you are subscribed to the Google Groups "Django users" group.
To view this discussion on the web visit https://groups.google.com/d/msg/django-users/-/nvSquVbDnmMJ.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to django-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.
No comments:
Post a Comment