Ask HN: How do you implement production-grade draft isolation in Django?
I'm building an open-source LMS with a content studio for instructors — exams, quizzes, assignments, courses.
Hit a wall with preview.
Instructors don't want a fake preview.
They want to actually take the exam they just built — real timer, real submission, real grading, state persisted across requests — then either publish it or throw everything away.
Looked at three options.
PostgreSQL schema separation is conceptually the cleanest but Django migrations get painful fast.
is_draft flags end up as conditionals in every layer.
Snapshot tables can't run real workflows.
What I actually want is pytest-style DB isolation in production.
Persistable, discardable.
Does this exist? How do systems like this usually handle it?
1 comment
[ 0.27 ms ] story [ 15.9 ms ] threada) separate managers for live and draft?
b) proxy models for live and draft with separate managers?
c) live and draft child models of the same abstract base model?
But also: Django supports routing between multiple databases.
A third option would be to have multiple instances running with different settings off the same codebase.