Je suis en train de faire une intégration entre Django et AWS Redshift à des fins de reporting. Jusqu'à présent, il semble que django ne va pas bien avec. L'un des problèmes que j'ai rencontrés est que je dois définir un identifiant de type alternatif pour chaque modèle, plutôt que le type AutoField car il n'est pas supporté par redshift. jusqu'ici tout va bien, mais je pensais que si je faisais déjà une super classe pour tous les modèles que je vais utiliser, je vais changer les noms des tables sur le chemin, je n'aime pas les noms par défaut que django car ce sont des modèles dans la base de données (app_name__model_name). J'ai réussi à le faire pour chaque sous-modèle (voir ci-dessous). mais je voudrais le déclarer dynamiquement dans BaseModel de manière à ce que chaque sous-modèle reçoive son propre nom de table en fonction de son nom de classe.Django model db_table héritage/injection
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)
Est-ce possible?
Vous avez raison à propos de l'identifiant, merci. Pouvez-vous me référer à n'importe quelle ressource concernant le remplacement de la métaclasse? – MentalBrake