#31803: Should ModelState.field_cache be documented?
-----------------------------------------+------------------------
               Reporter:  Jaap Roes      |          Owner:  nobody
                   Type:  Uncategorized  |         Status:  new
              Component:  Uncategorized  |        Version:  3.0
               Severity:  Normal         |       Keywords:
           Triage Stage:  Unreviewed     |      Has patch:  0
    Needs documentation:  0              |    Needs tests:  0
Patch needs improvement:  0              |  Easy pickings:  0
                  UI/UX:  0              |
-----------------------------------------+------------------------
 While writing a model method that relies on data of a related object I
 decided that it would be nice if this method could log a warning when it
 is called without the related object having been prefetched.

 I came across this StackOverflow question
 https://stackoverflow.com/questions/36402129/is-there-a-way-to-check-
 whether-a-related-object-is-already-fetched and based on that I
 implemented something like the following:

 {{{
 def my_method(self):
     if 'related_object' not in self._state.fields_cache:
         warnings.warn(
             'Calling MyModel.my_method without prefetching the related
 object can inefficient '
             'Consider adding prefetch_related/select_related to the
 originating queryset.',
             category=RuntimeWarning,
             stacklevel=3
         )
     ...
 }}}

 This seems to work as intended.

 Checking the docs I see that `Model._state` ''is'' documented
 (https://docs.djangoproject.com/en/3.0/ref/models/instances/#state), but
 the `fields_cache` attribute ''isn't''.

 Can I rely on `fields_cache`? Should I consider it to be public but
 undocumented, or private with the possibility of disappearing without
 notice?

-- 
Ticket URL: <https://code.djangoproject.com/ticket/31803>
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 on the web visit 
https://groups.google.com/d/msgid/django-updates/048.b69d47152d140a76bd27e19d3bb59cc4%40djangoproject.com.

Reply via email to