Exercise 2: What commit=False Does, and Why status Isn't a Form Field — Possible Solution ==================================================================== WHAT commit=False ACTUALLY DOES ------------------------------ form.save(commit=False) builds the Item instance from the form's already-validated data and returns it in memory, without writing it to the database yet. This gives an opportunity to set or adjust additional fields on that instance in code before the actual .save() call that commits it to the database. WHY status IS SET IN THE VIEW, NOT INCLUDED IN ItemForm ------------------------------ status is deliberately left out of ItemForm's fields list so that the user submitting the form has no way to set it themselves - every newly added item should start as "active" regardless of what the user does or doesn't type into the form. Setting item.status = "active" directly in the view, after commit=False returns the unsaved instance, guarantees this value is always correct without depending on the user (or the form) to supply it, and without exposing a field in the UI that shouldn't be user-editable in the first place. WHY THIS WORKS AS AN ANSWER ------------------------------ It correctly explains that commit=False returns an unsaved instance to allow additional server-controlled fields to be set before saving, and correctly explains that status is kept out of the form specifically so its value is never up to the user, matching the same principle of keeping certain fields server-controlled rather than user-supplied.