diff options
| author | Renaud Parent <renaud.parent@gmail.com> | 2014-06-06 16:16:17 +0000 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2014-06-18 13:53:07 -0400 |
| commit | 87d0a3384cc263fe0df749a28e2fbc1e1240f043 (patch) | |
| tree | 6cb2c535b6977abd626cf96fede8fcca5595300a /django/db | |
| parent | de9012907063e210e97c0d65cde312ff6174d420 (diff) | |
Fixed #22778 -- Added a model Meta option to define default_related_name.
Thanks jorgecarleitao and mmardini for reviews.
Diffstat (limited to 'django/db')
| -rw-r--r-- | django/db/models/options.py | 4 | ||||
| -rw-r--r-- | django/db/models/related.py | 9 |
2 files changed, 11 insertions, 2 deletions
diff --git a/django/db/models/options.py b/django/db/models/options.py index 632c71f3f9..39f0ab6f19 100644 --- a/django/db/models/options.py +++ b/django/db/models/options.py @@ -20,7 +20,7 @@ DEFAULT_NAMES = ('verbose_name', 'verbose_name_plural', 'db_table', 'ordering', 'order_with_respect_to', 'app_label', 'db_tablespace', 'abstract', 'managed', 'proxy', 'swappable', 'auto_created', 'index_together', 'apps', 'default_permissions', - 'select_on_save') + 'select_on_save', 'default_related_name') def normalize_together(option_together): @@ -99,6 +99,8 @@ class Options(object): # A custom app registry to use, if you're making a separate model set. self.apps = apps + self.default_related_name = None + @property def app_config(self): # Don't go through get_app_config to avoid triggering imports. diff --git a/django/db/models/related.py b/django/db/models/related.py index 6e4f946ea9..51460eedbe 100644 --- a/django/db/models/related.py +++ b/django/db/models/related.py @@ -57,7 +57,14 @@ class RelatedObject(object): # If this is a symmetrical m2m relation on self, there is no reverse accessor. if getattr(self.field.rel, 'symmetrical', False) and self.model == self.parent_model: return None - return self.field.rel.related_name or (self.opts.model_name + '_set') + if self.field.rel.related_name: + return self.field.rel.related_name + if self.opts.default_related_name: + return self.opts.default_related_name % { + 'model_name': self.opts.model_name.lower(), + 'app_label': self.opts.app_label.lower(), + } + return self.opts.model_name + '_set' else: return self.field.rel.related_name or (self.opts.model_name) |
