#1 by Anwesha (edited )
Hi there, Hope you are well. I have recently completed coding my first treatment. And then started to code my survey. Everything seemed to be going well since I did not receive any error in my PyCharm. However, when I ran the survey using otree devserver, I get an error saying 'Internal Server Error'. I tried modifying the survey, such as taking out the questions with checkboxes, but I still keep getting the same error. I am giving some examples of the survey I have designed below: class C(BaseConstants): NAME_IN_URL = 'survey' PLAYERS_PER_GROUP = None NUM_ROUNDS = 1 job = [ dict(name='pt', label="Yes, part time"), dict(name='ft', label="Yes, full time"), dict(name='no', label="No, I don't"), dict(name='benefit', label="Receive benefits/scholarships"), ] class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): age = models.StringField( choices=[['Less than 18'], ['18-24'], ['25-34'], ['35-44'], ['45-54'], ['Greater than 55'], ['Prefer not to answer']], label='1. How old are you?', widget=widgets.RadioSelect, ) pt = models.BooleanField(blank=True) ft = models.BooleanField(blank=True) no = models.BooleanField(blank=True) # FUNCTIONS # PAGES class Demographics(Page): form_model = 'player' form_fields = ['age'] class Job(Page): form_model = 'player' @staticmethod def get_form_fields(player: BasePlayer): return [lang['name'] for lang in C.job] @staticmethod def error_message(player: BasePlayer, values): # print('values is', values) num_selected = 0 for lang in C.job: if values[lang['name']]: num_selected += 1 if num_selected < 1: return "You must select at least 1 option." page_sequence = [Demographics, Job]
#2 by Fanist
let the 'age' in Player field be: class Player(BasePlayer): age = models.StringField( choices=['Less than 18', '18-24', '25-34', '35-44', '45-54', 'Greater than 55', 'Prefer not to answer'], label='1. How old are you?', widget=widgets.RadioSelect, )
#3 by Anwesha
Thank you so much, it worked.