#1 by mitnec
Hi,
I'm stuck.
I'd like to have a get_form_fields that returns from 3-12 fields for a particular page. Each field goes with an image (path supplied via vars_for_template). I'd like to position everything using a for loop on the template:
<!-- Make a for loop that generates each image / blank pair -->
{{ for prompt in player.prompts_subset }}
<img src="{{ prompt.File_name }}"/>
{{ formfield 'SOMETHING' }}
{{ endfor }}
But I can't see how to use varying numbers of fields delivered by get_form_fields without using {{ formfields }} (plural). Is there a way to do it?
If not, I can hard-code the max number and hide stuff I don't want people to see, but that seems inelegant...
#2 by Chris_oTree
def prompts_subset(player: Player):
# just an example
return [dict(field_name='f1', file_name='f1_file'), dict(field_name='f1', file_name='f2_file')]
class MyPage(Page):
@staticmethod
def get_form_fields(player: Player):
return [prompt['field_name'] for prompt in prompts_subset(player)]
@staticmethod
def vars_for_template(player: Player):
return dict(prompts=prompts_subset(player))
{{ for prompt in prompts }}
<img src="{{ prompt.file_name }}"/>
{{ formfield prompt.field_name }}
{{ endfor }}