既存のデータ モデルと互換性のある Django ORM マッピングを作成しようとしているため、既存のテーブル名と列名のセットを操作しようとしています。
クラス InformationObject がクラス Object から派生する複数テーブル継承の状況があります。Django にこれを通常の方法で処理させたい:
class Object(models.Model):
class Meta:
db_table = "object"
class InformationObject(Object):
class Meta:
db_table = "information_object"
この場合、Django はobject_ptr_idという継承モデルに 1 対 1 のフィールドを自動的に作成します。ただし、私が使用するように制約されているスキーマでは、オブジェクトへの参照は単に「id」と呼ばれます。そう:
Djangoが複数テーブルの継承に自動的に使用する列の名前を何らかの方法で指定する方法はありますか?
別の方法で使用する必要がある代替手段は、明示的な 1 対 1 のフィールドを使用することですが、そうするとオブジェクト モデルからデータベース以外のメソッドを継承できなくなります。
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メソッドを配置できますか...?