私はすでにこのようなモデルを持っています:
class MyBase(models.Model):
field_a = models.IngetField()
field_b = models.IngetField()
class Class1(MyBase):
field_c = models.IngetField()
class Class2(MyBase):
field_c = models.IngetField()
これは、各 Class1 および Class2 の mybase_ptr_id および field_c フィールドを自動インクリメントすることを意味します。
設計上の理由から、スキーマを次のように変更します。
class Class1(models.Model):
field_a = models.IngetField()
field_b = models.IngetField()
field_c = models.IngetField()
class Class2(models.Model):
field_a = models.IngetField()
field_b = models.IngetField()
field_c = models.IngetField()
代わりに、これは自動インクリメント ID とフィールド field_a、field_b、field_c (私が推測する最も一般的なアプローチ) を必要とします。
テーブルの構造を変更するための確立された、または推奨される方法はありますか? 私はpostgresqlを使用しています。
各テーブルの基本的な方法は次のとおりです。
- 新しい ID 列を作成します。
- mybase_ptr_id に既にある情報を入力します。
- id をシリアルの NOT NULL PRIMARY KEY に変換します。
- id の次の値のインデックスを再作成します。
- field_a 列と field_b 列を追加します。
- MyBase テーブルの field_a、field_b の値に対応する一致。
- mybase_ptr_id から列を削除します。
これに関する重要な問題を見逃していますか?みなさんのおすすめを読んでみたい...