1👍
I have a gist for this, I just figured it out for myself last week:
https://gist.github.com/bjb/5717314
In a nutshell: make a new field type for a model that includes a hidden input for the model id and validates to the full model, put it in your form, and make a formset of these forms.
In my own search for the solution, people told me to use CheckboxSelectMultiple, but I didn’t like that route because I would have had to put each model description into a single string. I wanted to list the model attributes as columns, and also (I haven’t tried this yet) optionally show some related models after each model. So I wanted more control over the display than CheckboxSelectMultiple would have given me.
After a year or two you get the hang of the documentation ; -). Also, don’t be afraid to read the source code of django.