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)

  • CurrencyField para montos en moneda; ver Currency and Decimal.

  • IntegerField

  • FloatField (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:

  • PLAYERS_PER_GROUP (descrito en Grupos)

  • NUM_ROUNDS (descrito en Rondas)

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])