非常によく似た構造を持ついくつかのモデル クラスがあるため、それらの定義のほとんどを抽象基本モデル クラスにリファクタリングしたいと考えています。ただし、各モデル クラスの多くのフィールドには、類似しているにもかかわらず、少なくとも 1 つの一意の属性があります。たとえば、次のことを考慮してください。
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'
何か案は?