#python #django #otree
#питон #джанго #отри
Вопрос:
Я хочу сделать так, чтобы участник не мог сделать ставку больше, чем на оставшийся фонд. Если он вложил по 30 в каждом из первых трех раундов, он не может инвестировать более 110 в следующем раунде.(200-3*30)
Я не получаю никаких ошибок во время выполнения этого, но проверка не работает, сообщение об ошибке не появляется. даже если первая инвестиционная ставка превышает 200.
Я хочу, чтобы общее количество заявок, собранных для всех раундов, не превышало первоначально указанный бюджет.
Пожалуйста, помогите
class Constants(BaseConstants): name_in_url = 'C' players_per_group = None num_rounds = 18 budget = 200 class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): invest = models.IntegerField( label="How much would you like to invest in this proposal?", min=0 ) total_invest = models.IntegerField() # PAGES class MyPage(Page): form_model = 'player' form_fields = ['invest'] @staticmethod def total_invest(player: Player): player_in_all_rounds = player.in_all_rounds() return sum([p.invest for p in player_in_all_rounds]) @staticmethod def avail_invest(player: Player): return Constants.budget - player.total_invest @staticmethod def invest_error_message(player, value): print('value is', value) if value gt; player.avail_invest: return 'Cannot invest more than your remaining fund' class ResultsWaitPage(WaitPage): pass **strong text** class Results(Page): pass page_sequence = [MyPage]