﻿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
9501	Generic relations to derived models won't allow for deletion of objects those models are attached to.	Beetle_B	nobody	"OK. Here's my scenario. I'm working with a blog, and with a comments app.

Let's say the comment's model is Comment. As it can be attached to any object, it has a generic foreign key to ContentType:

{{{
    # Generic Foreign Key Fields
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField(_('object ID'))
    content_object = generic.GenericForeignKey()
}}}

Now I didn't like the Comment model: It was lacking an important field (comment_html). I didn't want to touch the comment's app's source code. So I created a new model that inherited from Comment and called it CommentMod. It consists of simply the extra field and overrides the save method.

The blog app has an Entry model. In that model, I put:

{{{
    comments = GenericRelation(CommentMod)
}}}

The goal was that if I delete a blog entry, it should delete all comments associated with it.

However, when I try to delete a blog entry that has comments via the admin, I get an error. Upon observing the SQL, it turns out that it can't find an 'object_id' and 'content_type_id' columns in the CommentMod tables. 

It can't do that because it's a derived model. Those columns are in the Comment tables. 

I tried changing it to:

{{{
    comments = GenericRelation(Comment)
}}}

But then if I try to delete Entry, I get a foreign key constraint problem from the DB (MySQL).

So it seems that I can't expect generic relations to work with derived models. I don't know if this is by design - if it's not, then it's a bug. 

For now, I'll just create a GenericForeignKey in the derived models as well. Not sure if it will work..."	Bug	closed	contrib.contenttypes	dev	Normal	fixed		mueen@…	Accepted	0	0	0	0	0	0
