【发布时间】:2020-02-26 19:40:08
【问题描述】:
我正在编写一个包含不同治疗组的实验。对于治疗组 3 和 4,我想通过使用表单字段来了解参与者的姓名。对于对照组和治疗组 1 - 2,名称无关紧要,因此不应该有 forms_field。
我已经考虑使用 if 循环在 HTML 中排除表单字段,因此如果处理 = 3 或 4,则显示该字段。但是,我无法进入其他治疗组的下一页,因为该字段不应为空。插入空白=True 并不是一个真正的选项,因为治疗组 3 和 4 可以跳过名称。我想“强制”治疗组 3 和 4 给我他们的名字。
我的代码太长,这里就不贴了,所以我就贴出相关的段落: 模型视图
class Subsession(BaseSubsession):
def creating_session(self):
treatmentgroup = itertools.cycle(['ControlGroup','one','two','three', 'four'])
for p in self.get_players():
p.treatmentgroup = next(treatmentgroup)
class Group(BaseGroup):
pass
class Player(BasePlayer):
name = models.StringField(label="Your Name:")
transcribed_text = models.LongStringField()
levenshtein_distance = models.IntegerField()
guthaben = models.CurrencyField(initial=c(0))
cumulative_guthaben = models.CurrencyField()
页面浏览量
class Welcome(Page):
form_model = 'player'
def is_displayed(self):
return self.round_number == 1
class Introduction(Page):
form_model = 'player'
def is_displayed(self):
return self.round_number == 1
class Math(Page):
form_model = 'player'
form_fields = ['name']
def is_displayed(self):
return self.round_number == 1
def before_next_page(self):
if self.round_number == 1:
self.player.guthaben = self.player.guthaben + Constants.endowment
def vars_for_template(self):
return {
'treatmentgroup': self.player.treatmentgroup,
'image_path': 'trophy/{}.png'.format(self.round_number)
}
HTML 页面
{% extends "global/Page.html" %}
{% load otree static %}
{% block title %}
The math task
{% endblock %}
{% block content %}
<p align="justify"> In case you have any questions, please open the door and wait for the experimenter to come to your cubicle.
</p>
{% if treatmentgroup == 'four' or treatmentgroup == 'three' %}
{% formfields %}
{% endif %}
{% next_button %}
{% endblock %}
提前致谢!
【问题讨论】:
标签: python html django form-fields