#1 by Andrea
Hello! I created the following variable: class MyPage(Page): form_model = 'player' # names must correspond to fields in models.py form_fields = ['choice', 'guess_choice_other'] @staticmethod def before_next_page(player, timeout_happened): # Save the player's choice in participant.vars participant=player.participant participant.choice = player.choice with choice being choice = models.BooleanField( label="Please Choose the Game", choices=[ [True, "Game 1"], [False, "Game 2"], ], ) Now, I would like to generate a variable (to have different treatments) in a new app as follows: In the player section in models: is_treatment_PD=models.BooleanField() while as a function: def creating_session(subsession): for player in subsession.get_players(): # Set is_treatment_PD based on the participant's choice player.is_treatment_PD = True if player.participant.vars.get('choice') == True else False However the variable is not stored. Why? I already created the 'choice' in settings.py. Many thanks!
#2
by
woodsd42
Creating session is run when the session is created - i.e. right at the start. This doesn't depend on app order or anything like that - when the session is created it runs creating_session for all apps. So, the subject hasn't made the decision yet, and the before_next_page() code has not run at the time of creating session, which I believe is why you're having this issue. Try putting it in a before_next_page() in the second app (you might need to have a 'dummy' page where they just click Next to facilitate that).
#3 by Andrea
I see! Thank you. What about that (suggested by Otree): class ShuffleWaitPage(WaitPage): wait_for_all_groups = True @staticmethod def after_all_players_arrive(subsession): subsession.group_randomly() etc... Because it doesn't work for me..