Understanding the QuizApp models¶
The structure of a QuizApp database may be confusing at first, but it is
actually fairly understandable. This document focuses on the relationships
between the models. For information about the other fields, view the
documentation for quizApp.models.
Experiment¶
At the root, there is the quizApp.models.Experiment. An Experiment
contains information such as when to start running, when to stop running, and
any introductory text necessary.
AssignmentSet¶
An Experiment also has a collection of
quizApp.models.AssignmentSet. Each AssignmentSet
is an association between a quizApp.models.Participant, an
Experiment, and a collection of quizApp.models.Assignment s. This
means that in a given Experiment, every Participant will have a different
AssignmentSet containing a sequence of Assignments.
Assignment¶
An Assignment is the object that associates a Participant with an
quizApp.models.Activity. The reason that AssignmentSet does
not directly contain Activities is that Activity is also associated with a
collection of quizApp.models.MediaItem s. This means that, for the
same Activity, two Participants may see two different Mediaitems. While
performing an Experiment, Participants are shown Assignments in the order they
appear in their AssignmentSet class.
Activity¶
An Activity is some screen that the Participant sees in the course of an
Experiment. Currently, the only Activity is
quizApp.models.Question, which displays a Question and some
choices. However, it is possible to extend QuizApp to have other types of
Activities. This would require creating a subclass of Activity in models.py
and implementing the correct logic to handle creation, reading, and updating of
your new Activity type.
Question¶
There are several subclasses of Question. They all operate around the principle
of displaying a string of text, followed by a series of
quizApp.models.Choice s. Each Choice is related to only one
Question, so Choices are not recycled from Question to Question. Since each
Choice has its own correct field, you can have a Question with all correct
choices, no correct choices, or anywhere in between. Questions are also
associated with Datasets. This represents which Datasets a Question’s
MediaItems are drawn from. A Question not associated with any Datasets can draw
MediaItems from any dataset.
MediaItem¶
A MediaItem is some stimulus that should be displayed when a Participant is
doing an Activity. Each MediaItem is associated with a
quizApp.models.Dataset. By default, QuizApp contains the
quizApp.models.Graph MediaItem. A Graph is simply an image file
located on disk. Again, it is possible to expand QuizApp to have MediaItems
that are videos, sounds, or anything else. You would need to subclass
MediaItem, then implement the correct logic for rendering the new MediaItem
type.
Dataset¶
A Dataset represents a collection of MediaItems that come from a common source.