from . import PostingEndpoint, PostingMiddleware class MentionsMiddleware(PostingMiddleware): def post_save(self, serializer): existing_mentions = [] if self.mode == PostingEndpoint.EDIT: existing_mentions = self.get_existing_mentions() new_mentions = [] for user in self.post.parsing_result["mentions"]: if user.pk not in existing_mentions: new_mentions.append(user) if new_mentions: self.post.mentions.add(*new_mentions) def get_existing_mentions(self): return [u["id"] for u in self.post.mentions.values("id").iterator()]