from django.db.models.query import QuerySet, Q from ..models.instructors import Instructor from ..models.missions import MissionProfile, MissionTypes from typing import List, Dict, Tuple def assign_profile(queryset: QuerySet[Instructor], data: Dict[str, List[MissionTypes]]) -> Tuple[int, List[str]]: i: int = 0 mix_types: List[MissionTypes] = data["mission_profiles"] mix_query: Q = Q() # Build an or query to select all aircrafts of the specified types for m in mix_types: mix_query |= Q(mtype=m) profiles: QuerySet[MissionProfile] = MissionProfile.objects.filter(mix_query).all() # Execute query for obj in queryset: obj.missions.clear() for ac in profiles: obj.missions.add(ac) obj.save() i += 1 return i, [m for m in mix_types]