Nov-01-2022, 01:06 AM
Hi all I'm building a Forum/Subforum application in django where the Forum and Subforum both have their own models and their threads have their own models.
Here is what my constructor looks like:
Here is how one of my methods is written right now:
Here is what my constructor looks like:
class ForumFunctions: def __init__(self,forum_slug=None): if Forum.objects.filter(slug=forum_slug).exists(): self.forum =Forum.objects.get(slug=forum_slug) self.threads =ForumThread.objects.filter(forum=self.forum) self.thread_cnt =len(self.threads) self.thread_serializer =NewForumThreadSerializer() else: self.forum =SubForum.objects.get(slug=forum_slug) self.threads =SubForumThread.objects.filter(forum=self.forum) self.thread_cnt =len(self.threads) self.thread_serializer =NewSubForumThreadSerializer()So the serializer is going to be based on the forum type(parent or child). Right now I have a few methods in this class where I have to first check the forum type before knowing where to retrieve or send data of course. I want to remove this repetition by initializing the serializer in the init constructor and then later pass data in other methods. I feel like I've done something like this in the past but I cannot remember how. I've tried initializing the serializer with data=None and then attempting to update the key in the method below but no go.
Here is how one of my methods is written right now:
def new_forum_thread(self,data): if self.forum.type == "parent": serializer = NewForumThreadSerializer(data=data) else: serializer = NewSubForumThreadSerializer(data=data) if serializer.is_valid(): serializer.save() return serializer.data else: return serializer.errors