Я программирую эксперимент с различными группами лечения. Для групп лечения 3 и 4 я хочу узнать имя участников, используя поле формы. Для контрольной группы и группы обработки 1 - 2 имя не имеет значения, и поэтому не должно быть поля forms_.
Я уже думал об исключении поля формы в HTML с помощью циклов if, поэтому при обработке= 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 %}
Заранее спасибо!