def get_object_or_none(model_class, select_related=None, prefetch_related=None, **filters): """ Safely fetch a single object from the database using Django ORM, or return None if it does not exist. Optionally supports select_related and prefetch_related to optimize query performance for related fields. Args: model_class (models.Model): The Django model class to query. select_related (Iterable[str], optional): List or tuple of fields for select_related. prefetch_related (Iterable[str], optional): List or tuple of fields for prefetch_related. **filters: Keyword arguments representing query filter conditions. Returns: instance (model_class | None): The object if found, or None if not found. Raises: MultipleObjectsReturned: If the query matches more than one object. Example: from myapp.models import User user = get_object_or_none(User, select_related=["profile"], id=5) if user: print("User found:", user.username) else: print("User not found.") """ try: queryset = model_class.objects if select_related: queryset = queryset.select_related(*select_related) if prefetch_related: queryset = queryset.prefetch_related(*prefetch_related) return queryset.get(**filters) except model_class.DoesNotExist: return None