Skip to main content

Overview

Relaciona includes two psychological assessments to help teachers understand their students better:
  1. VARK Learning Styles: Visual, Aural, Read/Write, Kinesthetic preferences
  2. Chapman Love Languages: Emotional reinforcement preferences adapted for education
These assessments provide insights that teachers use to personalize instruction and build stronger student relationships.

Assessment Architecture

The assessment system is built with four interconnected models in quizzes/models.py.

Core Models

Questionnaire

Container for a complete assessment
  • Title (e.g., “VARK”, “Chapman”)
  • Description
  • Related questions

Question

Individual assessment items
  • Question text
  • Belongs to one questionnaire
  • Has multiple options

Option

Possible answers to questions
  • Option text
  • Category mapping (V/A/R/K or A/B/C/D/E)
  • Point value

UserResult

Calculated outcomes
  • User’s dominant category
  • Stored for quick access
  • Unique per user + questionnaire

Database Schema

Questionnaire Model

class Questionnaire(models.Model):
    title = models.CharField(max_length=100)
    description = models.TextField(blank=True)
Simple container representing either VARK or Chapman assessment.

Question Model

class Question(models.Model):
    questionnaire = models.ForeignKey(Questionnaire, on_delete=models.CASCADE)
    text = models.CharField(max_length=255)
Questions belong to a questionnaire via foreign key. Deletion of questionnaire cascades to questions.

Option Model

class Option(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE, related_name='options')
    text = models.CharField(max_length=255)
    category = models.CharField(max_length=1, choices=ALL_CATEGORIES)
    value = models.IntegerField(default=1)
Key Features:
  • category: Single-letter code (V/A/R/K or A/B/C/D/E)
  • value: Point weight for scoring (typically 1)
  • related_name='options': Enables question.options.all()

UserAnswer Model

class UserAnswer(models.Model):
    user = models.ForeignKey(UserProfile, on_delete=models.CASCADE)
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    selected_option = models.ForeignKey(Option, on_delete=models.CASCADE)
Tracks individual answer selections. Multiple UserAnswers per user across different questions.

UserResult Model

class UserResult(models.Model):
    user = models.ForeignKey(UserProfile, on_delete=models.CASCADE)
    questionnaire = models.ForeignKey(Questionnaire, on_delete=models.CASCADE)
    dominant_category = models.CharField(max_length=1, choices=ALL_CATEGORIES)
    
    class Meta:
        unique_together = ('user', 'questionnaire')
Important: The unique_together constraint ensures one result per user per questionnaire.

VARK Learning Styles

The VARK model identifies four learning preferences.

Category Definitions

From quizzes/constants.py:1-6:
VARK_CHOICES = [
    ('V', 'Visual'),      # Learn through seeing
    ('A', 'Aural'),       # Learn through hearing
    ('R', 'Read/Write'),  # Learn through reading and writing
    ('K', 'Kinesthetic'), # Learn through doing
]
Visual (V)
  • Prefer diagrams, charts, and images
  • Remember faces better than names
  • Benefit from color coding and spatial organization
Aural (A)
  • Learn best through lectures and discussions
  • Remember what they hear
  • Benefit from verbal explanations and group discussions
Read/Write (R)
  • Prefer text-based learning
  • Love reading textbooks and taking notes
  • Excel at written assignments and essays
Kinesthetic (K)
  • Learn by doing and experiencing
  • Need hands-on activities
  • Benefit from practice, movement, and real-world applications

Chapman Love Languages

Adapted from Gary Chapman’s “Five Love Languages” for educational context.

Category Definitions

From quizzes/constants.py:8-14:
CHAPMAN_CHOICES = [
    ('A', 'Palabras de Afirmación'),                    # Words of Affirmation
    ('B', 'Tiempo de Calidad'),                         # Quality Time
    ('C', 'Recibir Detalles o Regalos'),               # Receiving Gifts
    ('D', 'Actos de Servicio'),                        # Acts of Service
    ('E', 'Contacto o Presencia Física y Emocional'),  # Physical Touch/Presence
]
Palabras de Afirmación (A)
  • Respond to verbal praise and encouragement
  • Value written feedback and positive comments
  • Motivated by recognition of their efforts
Tiempo de Calidad (B)
  • Value one-on-one attention from teachers
  • Appreciate focused conversations
  • Thrive on undivided attention and active listening
Recibir Detalles o Regalos (C)
  • Appreciate tangible tokens of appreciation
  • Value certificates, stickers, or small rewards
  • Remember thoughtful gestures
Actos de Servicio (D)
  • Appreciate when teachers help them directly
  • Value assistance with challenges
  • Respond to supportive actions
Contacto o Presencia Física y Emocional (E)
  • Value physical proximity and emotional presence
  • Appreciate high-fives, pats on the back
  • Benefit from emotional support and empathy

How Assessment Results Are Used

Storage on UserProfile

Results are stored directly on the user’s profile in accounts/models.py:24-25:
learning_style = models.CharField(max_length=100, blank=True, null=True)
emotional_reinforcement = models.CharField(max_length=100, blank=True, null=True)
These fields cache the assessment results for quick access throughout the application.

Teacher Access

Teachers can:
  1. View individual results: See each student’s learning style and emotional preferences
  2. Adapt instruction: Tailor teaching methods to student preferences
  3. Build relationships: Use Chapman results to connect meaningfully with students
  4. Group strategically: Create balanced groups based on learning styles

Display in Games

From minigames/views.py:370-381, the Complete Profile Game shows assessment results:
vark = UserResult.objects.filter(user=s, questionnaire=vark_q).first()
chapman = UserResult.objects.filter(user=s, questionnaire=chapman_q).first()

options_data.append({
    'student_id': s.id,
    'full_name': s.full_name or s.username,
    'age': calculate_age(s.date_of_birth),
    'favorite_artist': s.favorite_artist or "N/A",
    'vark_result': vark.dominant_category if vark else "Pte",
    'chapman_result': chapman.dominant_category if chapman else "Pte",
    'motivation': s.motivation or "N/A"
})
The game displays:
  • VARK learning style (V/A/R/K or “Pte” for pending)
  • Chapman language (A/B/C/D/E or “Pte”)
  • Other profile information
Players must match complete profiles to the correct student.

Assessment Workflow

1

Student Takes Assessment

Student answers multiple-choice questions for VARK or Chapman questionnaire.
2

Answers Recorded

Each answer creates a UserAnswer record linking user, question, and selected option.
3

Results Calculated

System tallies points by category based on selected options’ categories and values.
4

Dominant Category Stored

A UserResult record is created (or updated) with the highest-scoring category.
5

Profile Updated

The result is cached on the UserProfile’s learning_style or emotional_reinforcement field.
6

Teachers Access Results

Teachers view results in student profiles and use insights for personalization.

Data Model Relationships

Questionnaire (VARK or Chapman)
    |
    └─> Questions (Multiple)
            |
            └─> Options (Multiple, each has category)

UserProfile
    |
    ├─> UserAnswers (Tracks selections)
    └─> UserResults (Stores final category)

Category Consolidation

The constants file creates a unified category list:
ALL_CATEGORIES = list({c[0]: c for c in VARK_CHOICES + CHAPMAN_CHOICES}.values())
This allows the Option and UserResult models to use a single choices parameter supporting both assessment types.
The unique_together constraint on UserResult prevents duplicate results. If a student retakes an assessment, their previous result is replaced.

Benefits for Education

Personalized Learning

Teachers adapt their methods to match student learning preferences, improving engagement and outcomes.

Stronger Relationships

Chapman results help teachers connect with students in ways that resonate emotionally.

Self-Awareness

Students gain insight into their own learning preferences and emotional needs.

Gamified Learning

Assessment results become part of fun, interactive games that build classroom community.

Build docs developers (and LLMs) love