Let's say in situation like this...
{{{#!python
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)
pass
}}}
Using `get_field` with value from `related_name`.
{{{#!python
>>> 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.
{{{#!python
>>> ModelB._meta.get_field('model_a_related_q_name')
<ManyToOneRel: testapp.modela>
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/29458>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
Old description:
New description:
The
[https://docs.djangoproject.com/en/2.1/ref/models/meta/#django.db.models.options.Options.get_field
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...
{{{#!python
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`.
{{{#!python
>>> 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.
{{{#!python
>>> ModelB._meta.get_field('model_a_related_q_name')
<ManyToOneRel: testapp.modela>
}}}
--
--
Ticket URL: <https://code.djangoproject.com/ticket/29458#comment:1>
* cc: Aram Dulyan (added)
--
Ticket URL: <https://code.djangoproject.com/ticket/29458#comment:2>
* component: Uncategorized => Documentation
* stage: Unreviewed => Accepted
Comment:
I haven't investigated in detail but I imagine the documentation should be
updated.
--
Ticket URL: <https://code.djangoproject.com/ticket/29458#comment:3>
* owner: nobody => Jeff
* status: new => assigned
Comment:
I've confirmed the reported behavior and agree the docs seem misleading.
I'll make a patch.
--
Ticket URL: <https://code.djangoproject.com/ticket/29458#comment:4>
* has_patch: 0 => 1
Comment:
[https://github.com/django/django/pull/10105 #29458]
--
Ticket URL: <https://code.djangoproject.com/ticket/29458#comment:5>
* status: assigned => closed
* resolution: => fixed
Comment:
In [changeset:"2d6776ffe0b58f729f4372635b49a59da99ca206" 2d6776f]:
{{{
#!CommitTicketReference repository=""
revision="2d6776ffe0b58f729f4372635b49a59da99ca206"
Fixed #29458 -- Doc'd how related_query_name affects
Model._meta.get_field().
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/29458#comment:6>
Comment (by Tim Graham <timograham@…>):
In [changeset:"ddd9272c2e323b4e8937774425ee93ebebf8eeba" ddd9272c]:
{{{
#!CommitTicketReference repository=""
revision="ddd9272c2e323b4e8937774425ee93ebebf8eeba"
[2.1.x] Fixed #29458 -- Doc'd how related_query_name affects
Model._meta.get_field().
Backport of 2d6776ffe0b58f729f4372635b49a59da99ca206 from master
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/29458#comment:7>