diff options
| author | Gabe Jackson <gabejackson@cxg.ch> | 2014-03-04 12:23:32 +0100 |
|---|---|---|
| committer | Anssi Kääriäinen <akaariai@gmail.com> | 2014-03-05 22:37:53 +0200 |
| commit | b77f26313cddbfde20dcf2661e9bd35458c2d1bd (patch) | |
| tree | ed655a90373cf606e304e82eaeceaf025c892328 /django/db | |
| parent | c627da0ccc12861163f28177aa7538b420a9d310 (diff) | |
Fixed #22207 -- Added support for GenericRelation reverse lookups
GenericRelation now supports an optional related_query_name argument.
Setting related_query_name adds a relation from the related object back to
the content type for filtering, ordering and other query operations.
Thanks to Loic Bistuer for spotting a couple of important issues in
his review.
Diffstat (limited to 'django/db')
| -rw-r--r-- | django/db/models/options.py | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/django/db/models/options.py b/django/db/models/options.py index 4e0307fc4f..4eec2df17c 100644 --- a/django/db/models/options.py +++ b/django/db/models/options.py @@ -449,9 +449,7 @@ class Options(object): for f, model in self.get_fields_with_model(): cache[f.name] = cache[f.attname] = (f, model, True, False) for f in self.virtual_fields: - if hasattr(f, 'related'): - cache[f.name] = cache[f.attname] = ( - f.related, None if f.model == self.model else f.model, True, False) + cache[f.name] = (f, None if f.model == self.model else f.model, True, False) if apps.ready: self._name_map = cache return cache @@ -530,8 +528,9 @@ class Options(object): proxy_cache = cache.copy() for klass in self.apps.get_models(include_auto_created=True): if not klass._meta.swapped: - for f in klass._meta.local_fields: - if f.rel and not isinstance(f.rel.to, six.string_types) and f.generate_reverse_relation: + for f in klass._meta.local_fields + klass._meta.virtual_fields: + if (hasattr(f, 'rel') and f.rel and not isinstance(f.rel.to, six.string_types) + and f.generate_reverse_relation): if self == f.rel.to._meta: cache[f.related] = None proxy_cache[f.related] = None |
