#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 , 6 years ago
Description: | modified (diff) |
---|
comment:2 by , 6 years ago
Cc: | added |
---|
comment:3 by , 6 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 , 6 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.