diff options
| author | Adam Johnson <me@adamj.eu> | 2020-01-17 12:44:37 +0000 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2020-01-31 14:07:52 +0100 |
| commit | c1b24718e05ea474955777d7bc4d9d5634560cd5 (patch) | |
| tree | add1d5b8e84663ed348c27c8df18b6d77dd14ca2 | |
| parent | e7d62e97eb40ab441778d1dff9885b5d892d0f80 (diff) | |
Cached ForeignObject.(local/foreign/reverse)_related_fields properties.
| -rw-r--r-- | django/db/models/fields/related.py | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/django/db/models/fields/related.py b/django/db/models/fields/related.py index 88bc0b5c15..f269d9e17f 100644 --- a/django/db/models/fields/related.py +++ b/django/db/models/fields/related.py @@ -616,21 +616,19 @@ class ForeignObject(RelatedField): related_fields.append((from_field, to_field)) return related_fields - @property + @cached_property def related_fields(self): - if not hasattr(self, '_related_fields'): - self._related_fields = self.resolve_related_fields() - return self._related_fields + return self.resolve_related_fields() - @property + @cached_property def reverse_related_fields(self): return [(rhs_field, lhs_field) for lhs_field, rhs_field in self.related_fields] - @property + @cached_property def local_related_fields(self): return tuple(lhs_field for lhs_field, rhs_field in self.related_fields) - @property + @cached_property def foreign_related_fields(self): return tuple(rhs_field for lhs_field, rhs_field in self.related_fields if rhs_field) |
