#29458 closed Bug (fixed)
Documentation incorrectly says Model._meta.get_field() uses related_name instead of related_query_name
| Reported by: | Tomasz Knapik | Owned by: | Jeff |
|---|---|---|---|
| Component: | Documentation | Version: | 2.1 |
| Severity: | Normal | Keywords: | |
| Cc: | Aram Dulyan | Triage Stage: | Accepted |
| Has patch: | yes | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description (last modified by )
The documentation seems to mention that get_field should use related_name, but when related_query_name is defined, it uses that instead.
Let's say in situation like this...
from django.db import models class ModelA(models.Model): test_model = models.ForeignKey('ModelB', models.CASCADE, related_name='model_a_related_name', related_query_name='model_a_related_q_name') class ModelB(models.Model): some_field = models.CharField(max_length=255)
Using get_field with value from related_name.
>>> from testapp.models import ModelB >>> ModelB._meta.get_field('model_a_related_name') Traceback (most recent call last): File "/home/tomaszk/Projects/testsite/venv/lib64/python3.6/site-packages/django/db/models/options.py", line 566, in get_field return self.fields_map[field_name] KeyError: 'model_a_related_name' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "<console>", line 1, in <module> File "/home/tomaszk/Projects/testsite/venv/lib64/python3.6/site-packages/django/db/models/options.py", line 568, in get_field raise FieldDoesNotExist("%s has no field named '%s'" % (self.object_name, field_name)) django.core.exceptions.FieldDoesNotExist: ModelB has no field named 'model_a_related_name' >>>
But this will work.
>>> ModelB._meta.get_field('model_a_related_q_name') <ManyToOneRel: testapp.modela>
Change History (7)
comment:1 by , 7 years ago
| Description: | modified (diff) |
|---|
comment:2 by , 7 years ago
| Cc: | added |
|---|
comment:3 by , 7 years ago
| Component: | Uncategorized → Documentation |
|---|---|
| Summary: | get_field uses related_query_name instead of related_name → Documentation incorrectly says Model._meta.get_field() uses related_name instead of related_query_name |
| Triage Stage: | Unreviewed → Accepted |
comment:4 by , 7 years ago
| Owner: | changed from to |
|---|---|
| Status: | new → assigned |
I've confirmed the reported behavior and agree the docs seem misleading. I'll make a patch.
Note:
See TracTickets
for help on using tickets.
I haven't investigated in detail but I imagine the documentation should be updated.