Raise exception for models defining discriminator value, but no column

This commit is contained in:
Adam Holmberg
2015-03-18 09:20:45 -05:00
parent b39daa128e
commit e1dbefcdac
2 changed files with 13 additions and 0 deletions

View File

@@ -796,6 +796,9 @@ class ModelMetaClass(type):
if len(discriminator_columns) > 1:
raise ModelDefinitionException('only one discriminator_column (polymorphic_key (deprecated)) can be defined in a model, {} found'.format(len(discriminator_columns)))
if attrs['__discriminator_value__'] and not is_polymorphic:
raise ModelDefinitionException('__discriminator_value__ specified, but no base columns defined with discriminator_column=True')
discriminator_column_name, discriminator_column = discriminator_columns[0] if discriminator_columns else (None, None)
if isinstance(discriminator_column, (columns.BaseContainerColumn, columns.Counter)):

View File

@@ -33,6 +33,11 @@ class TestPolymorphicClassConstruction(BaseCassEngTestCase):
type1 = columns.Integer(polymorphic_key=True)
type2 = columns.Integer(polymorphic_key=True)
def test_no_polymorphic_key_column_failure(self):
with self.assertRaises(models.ModelDefinitionException):
class M(models.Model):
__polymorphic_key__ = 1
def test_polymorphic_key_inheritance(self):
""" Tests that polymorphic_key attribute is not inherited """
class Base(models.Model):
@@ -264,6 +269,11 @@ class TestInheritanceClassConstruction(BaseCassEngTestCase):
type1 = columns.Integer(discriminator_column=True)
type2 = columns.Integer(discriminator_column=True)
def test_no_discriminator_column_failure(self):
with self.assertRaises(models.ModelDefinitionException):
class M(models.Model):
__discriminator_value__ = 1
def test_discriminator_value_inheritance(self):
""" Tests that discriminator_column attribute is not inherited """
class Base(models.Model):