How would I implement a change approval process for a Django model?
I would create another table (tablename_approval) with columns something like
approved    | boolean
approved_by | foreign key to user
timestamp   | timestamp
to track the state of each individual row. 
You might want to consider an enum rather than boolean to track the difference between items which have not yet been approved versus those that were checked and intentionally not approved.
I have a model for which changes need to be approved by a user with a certain flag before they are seen by everybody. Making two different identical models is not an option, because the model has a many-to-many field referencing itself, which needs to be linked to both approved and non-approved entries.
I'm using Django 1.7. django-moderation looks like the best option, but it doesn't support manytomany relations. I've also tried django-gatekeeper which didn't work for me either. 
Is there a library which supports many-to-many relationships?
If not, how would I go about doing this myself?