Exercise 3: JSONField and Django's Relational Identity — Possible Solution ==================================================================== WHAT JSONField IS ------------------------------ JSONField is a native Django model field, available since Django 3.1, that stores genuinely semi-structured or document-shaped data directly inside a single relational database column, backed by real native JSON support in modern PostgreSQL, MySQL, and SQLite. RecipeCache uses it to store the full list of matched-meal dictionaries returned from TheMealDB, rather than breaking that data apart into further normalized tables. WHY THIS DOESN'T CONTRADICT DJANGO'S RELATIONAL IDENTITY ------------------------------ Using JSONField here isn't an abandonment of Django's schema-on-write, relational model - it's a deliberate, honest acknowledgment that some data genuinely doesn't need to be fully normalized to be modeled well. The meals_json data doesn't have a fixed shape worth enforcing at the column level, and doesn't benefit from being split into separate related tables for this app's own modest needs. Django still enforces a real schema for every other field on every other model in this course; JSONField is simply the framework's own recognized escape hatch for the specific, narrower cases where document-shaped storage is genuinely the better fit, not a wholesale departure from relational modeling. WHY THIS WORKS AS AN ANSWER ------------------------------ It correctly describes JSONField as a native column type for document-shaped data within a relational database, and correctly explains that using it for one specific, genuinely well-suited case doesn't undermine Django's overall relational, schema-on-write identity elsewhere in the same application - relational and document modeling aren't a strict either/or.