﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
28613	Document that GenericForeignKey returns None when referring to nonexistent pk	Sjoerd Job Postmus	Harshit Jain	"We have a model as follows.

{{{
class RemoteIdentifierToLocal(models.Model):
    remote_id = models.UUIDField(primary_key=True)

    local_object_content_type = models.ForeignKey(ContentType)
    local_object_object_id = models.PositiveIntegerField()
    local_object = GenericForeignKey(ct_field='local_object_content_type', fk_field='local_object_object_id')
}}}

which is used as follows:

{{{
if guid is not None:
    local_object = RemoteIdentifierToLocal.objects.get(remote_id=guid).local_object
}}}

To my surprise, we found a case where `guid` was not-None, and `local_object` was None.

This was traced back to the implementation of `GenericForeignKey` containing a try/except-pass:

https://github.com/django/django/blob/master/django/contrib/contenttypes/fields.py#L241 (now)
https://github.com/django/django/commit/bca5327b21eb2e3ee18292cbe532d6d0071201d8#diff-cc83843e623c1ab07a24317073330058R62 (initial commit, 11 years ago)

Now, apparently this has been this way for 11 years already, so must be the ""correct"" behaviour. However I have not found any documentation of this fact, and would (myself) expect the attribute-access to *do* raise an exception or warning of some sort."	Cleanup/optimization	closed	Documentation	dev	Normal	fixed	genericforeignkey		Accepted	1	0	0	1	0	0
