﻿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
35941	Add composite GenericForeignKey support	Csirmaz Bendegúz		"This is a follow up to #373 (''CompositePrimaryKey'').

**Proposal:**

My proposal is to implement ''GenericForeignKey'' support with **JSON**.

1. `object_id` is a `CharField` (or `TextField`)
2. ''CompositePrimaryKey'' is stored as a ''JSON array'' in `object_id`
3. JOINs can be achieved with JSON functions (varies per db backend)

If anyone is interested, I have a proof of concept available on my [https://github.com/csirmazbendeguz/django/pull/9 GitHub] (it's an out of sync draft right now, I'll submit a proper PR once composite primary keys are merged).

**Risks:**

1. What if someone is using a JSON array as the primary key (but it's not a composite primary key)?
''Before deserializing the JSON array, we need to check if the content type has a composite primary key or not.''
2. What if the db backend doesn't support JSON functions?
''All supported databases support JSON functions.''

**Notes:**

Django admin's `LogEntry` has its own implementation of ""generic foreign keys"".
The approach we take with `GenericForeignKey` should also apply to `LogEntry`.
"	New feature	new	Database layer (models, ORM)	dev	Normal			Csirmaz Bendegúz	Unreviewed	0	0	0	0	0	0
