Django模型-多类还是少类?与“合作”;不完全是继承”;关系

Django模型-多类还是少类?与“合作”;不完全是继承”;关系,django,inheritance,django-models,Django,Inheritance,Django Models,我有一个相当通用的模型,如下所示: class Keyword(models.Model): ancestors = models.ManyToManyField(Keyword) name = models.CharField() description = models.CharField() 问题是,我有几种不同类型的关键字,它们都有不同形式的业务逻辑。例如,有些人永远不允许有任何祖先。其他人永远不能成为祖先 它变得更加复杂,但基本问题是:我可以创建一个平面类,并

我有一个相当通用的模型,如下所示:

class Keyword(models.Model):
    ancestors = models.ManyToManyField(Keyword)
    name = models.CharField()
    description = models.CharField()
问题是,我有几种不同类型的关键字,它们都有不同形式的业务逻辑。例如,有些人永远不允许有任何祖先。其他人永远不能成为祖先

它变得更加复杂,但基本问题是:我可以创建一个平面类,并可能使用类型枚举,但我不确定如何强制执行,例如,祖先只能是某一类型。或者我可以创建一个类的层次结构,但这样我就不能像models.ManyToManyField(关键字)那样做,因为我需要包含多个类型

我想我可以解决这个难题,但它很混乱,看起来根本不像干净的业务逻辑。有什么好的建议吗?

我想你是在描述。Django当前不支持它

在支持的选项之外,我建议通过在重载的子类的
save()
方法中进行验证来使用和强制特定于类的约束