我试图创建一个Django ORM映射,它与现有的data model兼容,所以我尝试使用现有的一组表和列名。Django多表继承:指定自定义的一对一列名
我有一个多表继承情况,其中一个类的信息对象派生自类对象。我想,让Django的这个处理的常用方法:
class Object(models.Model):
class Meta:
db_table = "object"
class InformationObject(Object):
class Meta:
db_table = "information_object"
在这种情况下的Django将在名为object_ptr_id的继承模型自动创建一个对一个字段。但是,在我被限制使用的模式中,对Object的引用简称为“id”。所以:
有没有办法以某种方式指定列的名称Django自动奇迹般用于多表继承?
另一种选择,我将不得不以其他方式使用,是使用一个明确的一到一个领域,但后来我将不能够从对象模型继承非数据库的方法:
class Object(models.Model):
class Meta:
db_table = "object"
class InformationObject(models.Model):
class Meta:
db_table = "information_object"
id = models.OneToOneField(Object, primary_key=True, db_column="id")
任何想法?也许我可以为它们创建一个通用的基类,并将非db方法放在那里......?
你最后的想法是非常稳固:创造对他们俩的公共基类,并把它作为一个mixin提供你正在寻找额外的功能。我建议将它作为一个实验来尝试。 (它可能行不通; Django的数据库层在Python的元类中做了一些相当不错的事情,但值得一试。) –