Well, setattr isn't actually committing the values to the db, so it seems like I do need to re-save. I tried a form.save_m2m() here, but it didn't do anything.