#36604: Add utility for lazy model resolution by string label (e.g.
"app_label.ModelName")
----------------------------------------+------------------------------
               Reporter:  Mbulelo_Peyi  |          Owner:  Mbulelo_Peyi
                   Type:  New feature   |         Status:  assigned
              Component:  Utilities     |        Version:  5.2
               Severity:  Normal        |       Keywords:
           Triage Stage:  Unreviewed    |      Has patch:  0
    Needs documentation:  0             |    Needs tests:  0
Patch needs improvement:  0             |  Easy pickings:  1
                  UI/UX:  0             |
----------------------------------------+------------------------------
 This feature proposes the addition of two utility functions to simplify
 lazy model resolution in Django:

 - get_model_by_label(model_label: str)
   Resolves and returns a model class from a string label like
 'app_label.ModelName'.

 - lazy_model(model_label: str)
   Returns a `SimpleLazyObject` that lazily resolves a model using the
 above utility.

 These functions are useful when:
 - Avoiding circular imports (e.g., in apps.py, signals.py, or settings.py)
 - Dynamically referencing models by name
 - Loading models safely before the app registry is fully ready

 This pattern is currently re-implemented in many Django projects and
 third-party packages. Including it in Django would standardize a safe,
 performant, and readable approach to lazy model loading.

 The get_model_by_label() function includes:
 - Input validation
 - Exception handling with ImproperlyConfigured
 - Caching via @lru_cache to improve performance
-- 
Ticket URL: <https://code.djangoproject.com/ticket/36604>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/django-updates/01070199366670b2-5b9eab77-aaec-404f-834f-1109920ca991-000000%40eu-central-1.amazonses.com.

Reply via email to