Raise exception for models defining discriminator value, but no column
This commit is contained in:
@@ -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)):
|
||||
|
||||
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user