from django.db.models import Manager from django.apps import apps from django.conf import settings from categories.models import Category class TestManager(Manager): def create( self, *, category=None, questions=[], **kwargs ): Question = apps.get_model("questions", "Question") Answer = apps.get_model("answers", "Answer") category = category instance = super().create( name=kwargs.get("name"), passing_score=kwargs.get("passing_score"), category=category, created_by=kwargs.get("user"), visible=kwargs.get("visible"), password=kwargs.get("password") ) for question in questions: question_instance = Question.objects.create( name=question["name"], description=question.get("description", ""), test=instance ) for answer in question["answers"]: Answer.objects.create( description=answer["description"], is_correct=answer.get("is_correct", False), question=question_instance ) return instance class TournamentManager(Manager): def create( self, *, name="", questions=[], passing_score=0, **kwargs ): Question = apps.get_model("questions", "Question") instance = super().create( name=name, passing_score=passing_score ) for q in questions: qq = Question.objects.get(id=q) qq.tournament.add(instance.id) return instance