Exercise 1: Why None Is Sufficient Here, Unlike deleteField() There — Possible Solution ==================================================================== THE SINGLE UNDERLYING DIFFERENCE ------------------------------ The difference comes down entirely to schema-on-write versus schema-on-read. In this Django/SQL course, expiry_date is an always-present column on every Item row, regardless of that row's history - a used item created directly as used already has expiry_date = NULL from the moment it's created, since every row shares the exact same set of columns. In the Firebase sibling course's schema-on-read model, a document created used-from-the-start simply never had an expiryDate field at all, so setting an existing document's expiryDate to null on transition would have created a second, different representation of "no expiry" alongside documents that never had the field to begin with. WHY THIS MEANS None IS SUFFICIENT HERE ------------------------------ Because every row in this course's Item table already has the identical set of columns no matter how it was created, there's only ever one possible shape for "no expiry" - a NULL value in that always-present column. There's no risk of two different representations existing side by side, because the schema itself guarantees every row looks the same structurally. deleteField() was necessary in the Firebase course specifically to avoid a real, existing risk of that kind of inconsistency that this course's storage model doesn't have to worry about at all. WHY THIS WORKS AS AN ANSWER ------------------------------ It correctly identifies schema-on-write versus schema-on-read as the single underlying difference, and correctly explains that a schema-on-write model's always-present columns guarantee one consistent representation of "no expiry" automatically, which is exactly the problem deleteField() had to solve manually in the schema-on-read model.