我有几个具有非常相似结构的模型类,所以我想将它们的大多数定义重构为抽象基础模型类。但是,每个模型类中的许多字段至少具有一个唯一属性,尽管在其他方面类似。例如,考虑:
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'
有什么想法吗?
答案 0 :(得分:0)
可能有一些方法可以让所有这些工作,但为什么不在新类上指定ref字段并继续前进?你的方法仍然非常糟糕。
class MyBaseModel(models.Model):
label = models.TextField()
class Meta:
abstract = True
class ModelA(MyBaseModel):
ref = models.ForeignKey('ModelAHelper')
class ModelB(MyBaseModel):
ref = models.ForeignKey('ModelBHelper')