Well, IMO any way that works and you feel comfortable supporting is
"okay". I can tell you what I did, but I don't know if it's any
better.
If I understand you correctly, you want to bring up the options a user
made previously and start from there instead of a blank slate. What I
did to accomplish this was to make an ajax call to the server, and
look up whatever identifiable information I had (user, form, etc.).
If it was in the database, I returned a form built from the previous
instance. If not, I returned a blank form. It brings in some
javascript (which is obviously not a part of Django, but is a common
component of web apps), but it made things quite a bit more
straightforward, IMO.
You can differentiate between the different options/fields (if
necessary) by using some guaranteed unique identifier and building
your form by hand, which you already appear to be doing.
HTH,
Wayne