Opened 6 years ago
Last modified 6 years ago
#29458 closed Bug
get_field uses related_query_name instead of related_name — at Version 1
Reported by: | Tomasz Knapik | Owned by: | nobody |
---|---|---|---|
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>
Note:
See TracTickets
for help on using tickets.