ok,
simple example:
we need a form, that consists of questions.
question is a django model and we can have any number of them.
let's assume, that answer is a string, so we can use text widget
(in my project type of field varied for questions).
in manipulator's __init__ we iterate all questions to add fields to it.
also we should somehow pick a validator, to validate current field.
it could be some ValidatorBuilder class, or 'if-elif' statement.
i am not sure about {{ field.formfield.foo }}. looking through the
oldforms' code i guess this should work, i used other overburden
technique.
manipulators.py:
from django import oldforms as oldforms
class DynamicFormManipulator( oldforms.Manipulator ):
def __init__( self ):
# create field for every question and append to manipulator's
fields
for q in Question.objects.all():
# create validator based on question's property
validator = ValidatorBuilder( q.something )
field = oldforms.TextField(
field_name = q.id,
length = 20,
max_length = 255,
is_required = True,
#or
#is_required = q.is_required,
validator_list = [ validator ]
)
field.question_text = q.question_text
field.foo = q.foo
# etc
self.fields.append( field )
views.py:
def view( request ):
manipulator = DynamicFormManipulator()
form = oldforms.FormWrapper( manipulator, new_data, errors )
return render_to_response( 'form.html', { 'form': form, } )
form.html:
<table>
<thead>
<tr>
<th>question</th>
<th>foo</th>
<th>your answer</th>
<th> </th>
</tr>
</thead>
<tbody>
{% for field in form.fields %}
<tr>
<tr>{{ field.formfield.question_text }}</tr>
<tr>{{ field.formfield.foo }}</tr>
<tr>{{ field }}</tr>
<tr>
{% if field.errors %}
<span class="error">
*** {{ field.errors|join:", " }}
</span>
{% else %}
{% endif %}
</tr>
</tr>
{% endfor %}
</tbody>
</table>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Django
users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---