diff --git a/cqlengine/models.py b/cqlengine/models.py index e55ed5ae..d01208ea 100644 --- a/cqlengine/models.py +++ b/cqlengine/models.py @@ -436,6 +436,9 @@ class ModelMetaClass(type): polymorphic_column_name, polymorphic_column = polymorphic_columns[0] if polymorphic_columns else (None, None) + if isinstance(polymorphic_column, (columns.BaseContainerColumn, columns.Counter)): + raise ModelDefinitionException('counter and container columns cannot be used for polymorphic keys') + # find polymorphic base class polymorphic_base = None if is_polymorphic and not is_polymorphic_base: diff --git a/cqlengine/tests/model/test_polymorphism.py b/cqlengine/tests/model/test_polymorphism.py index d608aae1..00078bcb 100644 --- a/cqlengine/tests/model/test_polymorphism.py +++ b/cqlengine/tests/model/test_polymorphism.py @@ -62,7 +62,10 @@ class TestPolymorphicClassConstruction(BaseCassEngTestCase): assert Base.column_family_name() == M1.column_family_name() def test_collection_columns_cant_be_polymorphic_keys(self): - pass + with self.assertRaises(models.ModelDefinitionException): + class Base(models.Model): + partition = columns.Integer(primary_key=True) + type1 = columns.Set(columns.Integer, polymorphic_key=True) class PolyBase(models.Model):