Modelos
Una aplicación de oTree tiene 3 modelos de datos: Subsession, Group y Player.
Un jugador es parte de un grupo, que es parte de una subsesión. Ver Visión general conceptual.
Supongamos que quieres que tu experimento genere datos que se vean así:
name age is_student
John 30 False
Alice 22 True
Bob 35 False
...
Aquí se muestra cómo definir la estructura de tabla anterior:
class Player(BasePlayer):
name = models.StringField()
age = models.IntegerField()
is_student = models.BooleanField()
Así que, un modelo es esencialmente una tabla de base de datos. Y un campo es una columna en una tabla.
Campos
Tipos de campo
BooleanField(para valores verdadero/falso y sí/no)CurrencyFieldpara montos en moneda; ver Currency and Decimal.IntegerFieldFloatField(para números reales)StringField(para cadenas de texto)LongStringField(para cadenas de texto largas; su widget de formulario es un área de texto de varias líneas)
Valor inicial/predeterminado
El valor inicial de tu campo será None, a menos que configures initial=:
class Player(BasePlayer):
some_number = models.IntegerField(initial=0)
min, max, opciones
Para obtener información sobre cómo establecer min, max o choices de un campo, consulta Validación simple de campos de formulario.
Campos y métodos incorporados
El jugador, el grupo y la subsesión ya tienen algunos campos predefinidos. Por ejemplo, Player tiene campos llamados payoff e id_in_group, así como métodos como in_all_rounds() y get_others_in_group().
Estos campos y métodos integrados se enumeran a continuación.
Subsesión
round_number
Devuelve el número de la ronda actual. Solo es relevante si la aplicación tiene múltiples rondas (establecido en C.NUM_ROUNDS). Consulte Rondas.
get_groups()
Devuelve una lista de todos los grupos en la subsesión.
get_players()
Devuelve una lista de todos los jugadores en la subsesión.
Otros métodos de subsesión
Grupo
round_number
Devuelve el número de la ronda actual.
Otros métodos de grupo
Jugador
id_in_group
Número entero asignado automáticamente que comienza desde 1. En juegos multijugador, indica si este es el jugador 1, el jugador 2, etc.
payoff
El payoff del jugador en esta ronda. Ver payoffs.
round_number
Devuelve el número de la ronda actual.
Otros métodos de jugador
Sesión
num_participants
El número de participantes en la sesión.
config
Consulta Eligiendo qué tratamiento jugar.
vars
Consulta Campos de sesión.
Participante
id_in_session
El ID del participante en la sesión. Esto es lo mismo que el id_in_subsession del jugador.
Otros atributos y métodos del participante
Constantes
C es el lugar recomendado para colocar los parámetros y constantes de tu aplicación que no varían de un jugador a otro.
Aquí están las constantes incorporadas:
si no quieres que el nombre real de tu aplicación se muestre en las URL, define una constante de cadena NAME_IN_URL con el nombre que desees.
Las constantes pueden ser números, cadenas, booleanos, listas, etc. Pero para tipos de datos más complejos como diccionarios, listas de diccionarios, etc., deberías definirlo en una función. Por ejemplo, en lugar de definir una constante llamada my_dict, haz esto:
def my_dict(subsession):
return dict(a=[1,2], b=[3,4])