レポートの目的で、Django と AWS Redshift の統合を行っています。これまでのところ、django はうまく機能していないように感じます。私が遭遇した問題の 1 つは、Redshift でサポートされていないため、AutoField タイプではなく、モデルごとに別のタイプ ID を設定する必要があることです。これまでのところとても良いですが、使用するすべてのモデルに対してすでにスーパークラスを実行している場合、途中でテーブル名を変更します.djangoが与えるデフォルトの名前は好きではありません.データベース内のモデルです(app_name__model_name)。すべてのサブモデルでそれを行うことができました(以下を参照)。しかし、各サブモデルがクラス名に従って独自のテーブル名を受け取るように、BaseModel で動的に宣言したいと思います。
class BaseModel(Model):
id = CharField(primary_key=True, max_length=36)
class Meta:
abstract = True
def __init__(self, *args, **kwargs):
super(RedshiftBaseModel, self).__init__(*args, **kwargs)
self.id = str(uuid4())
class SubModel1(BaseModel):
class Meta(BaseMode.Meta):
db_table = 'SubModel1'
field1 = CharField(max_length=64, primary_key=True)
class SubModel2(BaseModel):
class Meta(BaseMode.Meta):
db_table = 'SubModel2'
field2 = CharField(max_length=64, primary_key=True)
そのようなことさえ可能ですか?