我有几个结构非常相似的模型类,所以我想将它们的大部分定义重构为一个抽象的基础模型类。然而,每个模型类中的许多字段至少有一个独特的属性,尽管在其他方面是相似的。例如,考虑:
class ModelA(models.Model):
id = models.AutoField(db_column='modela_id', primary_key=True)
label = models.TextField()
ref = models.ForeignKey('ModelAHelper')
class ModelB(models.Model):
id = models.AutoField(db_column='modelb_id', primary_key=True)
label = models.TextField()
ref = models.ForeignKey('ModelBHelper')
我想做类似的事情:
class MyBaseModel(models.Model):
id = models.AutoField(db_column=self.class_name.lower()+'_id', primary_key=True)
label = models.TextField()
ref = models.ForeignKey(self.class_name+'Helper')
class Meta:
abstract = True
class ModelA(MyBaseModel):
class_name = 'ModelA'
class ModelB(MyBaseModel):
class_name = 'ModelB'
有任何想法吗?