Opened 7 years ago
Last modified 7 years ago
#28418 closed Bug
Creating join paths to fields that are GenericRelations to proxy models fails with an AttributeError — at Initial Version
Reported by: | Rachel Tobin | Owned by: | nobody |
---|---|---|---|
Component: | contrib.contenttypes | Version: | dev |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Accepted | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
This appears to be a regression introduced by https://code.djangoproject.com/ticket/12885. When attempting to build joins for a GenericRelation field that points to a proxy model, an AttributeError is caused via contrib/contenttypes/fields.py:375
, when trying to get the ancestor of the proxy model's parent. Since the proxy model's parent does not have an ancestor, None is returned and contrib/contenttypes/fields.py:377
raises an AttributeError, given that field
is None.
As an example:
class GenericConcreteModel(models.Model): content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE) object_id = models.PositiveIntegerField() content_object = GenericForeignKey() class GenericProxyModel(GenericConcreteModel): class Meta: proxy = True class GenericRelationProxyModel(models.Model): proxy_model = GenericRelation('GenericProxyModel')
Where the query
GenericRelationProxyModel.objects.filter(proxy_model__content_type=ContentType.objects.get(id=1))
will cause an attribute error.