#1 by DominikBeck
Dear all, I have a game with five rounds. After each round, I would like to moitor some variables (payoff, strategy, ...) of all previous rounds. Currently, I have a quite nested solution: def vars_for_template(player: Player): group = player.group if group.round_number == 1: return dict( ... ) if group.round_number == 2: return dict( ... ) E.g. at round number 2, all variables from round number 1 are send to the template, all variables from further rounds are also created, but declarated with a "?" (because I have one template for all rounds) Any tips for a lean solution? Best Dominik
#2 by JanVavra (edited )
If I understand your problem correctly I would use a for loop lopping using player objects of one participant in all rounds as follows: def vars_for_template(player: Player): values_to_display = {} for p in player.in_all_rounds(): value = p.field_maybe_none('field_name') key = f'value_in_round_{player.round_number}' # if value is defined in the round, use its value if value: values_to_display[key] = value # if not defined, replace with ? else: values_to_display[key] = "?" return values_to_display You could also collect the values as a list a display them on the template using loops, instead of hardcoding the values as I did here.
#3 by DominikBeck
Hello Jan, thank you really much for your response! You understood my problem and the approach helps me for the solution. The idea to make a dictionary and safe it in there is pretty smart! Instead of "f'value_in_round_{player.round_number}", I just used "p.round_number" and it also worked. Best, Dominik