﻿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
6844	Generic relations improperly inherited	cide@…	nobody	"As can be seen below, the generic_models attribute of the BaseModel class is not properly inherited by the child class. In the TestModel example where no inheritance takes place, it works fine.

Code:
{{{
#!python
from django.db import models
from django.contrib.contenttypes import generic
from django.contrib.contenttypes.models import ContentType

class GenericModel(models.Model):
    # Generic relation-related attributes
    content_type = models.ForeignKey(ContentType)
    content_object = generic.GenericForeignKey()
    object_id = models.PositiveIntegerField()

class BaseModel(models.Model):
    generic_models = generic.GenericRelation(GenericModel)
    
    class Meta:
        abstract = True
        
class ChildModel(BaseModel):
    name = models.CharField(max_length=31)
        
class TestModel(models.Model):
    generic_models = generic.GenericRelation(GenericModel)
}}}

Test case:
{{{
>>> test_child = TestModel()
>>> test_child.generic_models # Works
<django.contrib.contenttypes.generic.GenericRelatedObjectManager object at 0x01FBCED0>
>>> child = ChildModel(name='Test')
>>> child.generic_models # Raises AttributeError

D:\Python25\lib\site-packages\django\contrib\contenttypes\generic.py in __get__(self, instance, instance_type)
    190             join_table = qn(self.field.m2m_db_table()),
    191             source_col_name = qn(self.field.m2m_column_name()),
--> 192             target_col_name = qn(self.field.m2m_reverse_name()),
    193             content_type = ContentType.objects.get_for_model(self.field.model),
    194             content_type_field_name = self.field.content_type_field_name,

D:\Python25\lib\site-packages\django\contrib\contenttypes\generic.py in m2m_reverse_name(self)
    132
    133     def m2m_reverse_name(self):
--> 134         return self.model._meta.pk.column
    135
    136     def contribute_to_class(self, cls, name):

AttributeError: 'NoneType' object has no attribute 'column'
}}}"		closed	Database layer (models, ORM)	queryset-refactor		fixed			Unreviewed	1	0	0	0	0	0
