这个问题是关于Django中的模型继承.
几乎所有我读过的内容(包括Django文档本身)都强烈建议使用"抽象基类"继承而不是"多表"继承.我同意推理,因此完全支持这项建议.但是,Django似乎没有支持:
例如,我有一些实现'抽象基类'继承模式的模型:
class Tool(models.Model):
name = models.CharField(max_length=30)
group = models.ManyToManyField(ToolGroup, blank=True) # Link to 'ToolGroup' MUST be placed on abstract class
attributes = models.ManyToManyField(ToolAttributeValue, blank=True) # Link to 'ToolAttributeValue' MUST be placed on abstract class
class Meta:
abstract = True # Almost everything I read strongly recommends against making this its own table
class HandheldTool(Tool):
electrical_safe = models.BooleanField(default=False)
class PowerTool(Tool):
compliance_expiry_date = models.DateTimeField()
class ConsumableTool(Tool):
combustible = models.BooleanField(default=False)
best_before = models.DateTimeField(null=True)
Run Code Online (Sandbox Code Playgroud)
我还有一些与工具相关的分组和信息类: …