Je cherchais un moyen de définir des tables de base de données et de les modifier via une API Django. Par exemple, je voudrais écrire du code qui manipule directement la table DDL et permette de définir des tables ou d'ajouter des colonnes à une table à la demande par programmation (sans exécuter de syncdb). Je me rends compte que django-sud et django-evolution peuvent venir à l'esprit, mais je ne pense pas vraiment à ces outils comme outils destinés à être intégrés dans une application et utilisés par l'utilisateur final ... ces outils sont plutôt utilisés pour mettre à jour vos tables de base de données. Je cherche quelque chose où je peux faire quelque chose comme:Django créer/modifier des tables à la demande
class MyModel(models.Model): # wouldn't run syncdb.. instead do something like below
a = models.CharField()
b = models.CharField()
model = MyModel()
model.create() # this runs the create table (instead of a syncdb)
model.add_column(c = models.CharField()) # this would set a column to be added
model.alter() # and this would apply the alter statement
model.del_column('a') # this would set column 'a' for removal
model.alter() # and this would apply the removal
Ceci est juste un exemple de jouet de la façon dont une telle API fonctionnerait, mais le point est que je serais très intéressé à savoir s'il est un moyen de créer et de modifier par programme des tableaux comme celui-ci. Cela peut être utile pour des choses telles que les systèmes de gestion de contenu, où l'on peut vouloir créer dynamiquement une nouvelle table. Un autre exemple serait un site qui stocke des ensembles de données d'une largeur arbitraire, pour lesquels les tables doivent être générées dynamiquement par l'interface ou les importations de données. Quelqu'un sait-il de bons moyens de créer et de modifier dynamiquement des tableaux comme celui-ci?
(D'accord, je sais que l'on peut faire des déclarations SQL directes contre la base de données, mais cette solution n'a pas la capacité de traiter les bases de données sous forme d'objets)
curieux de si les gens ont des suggestions ou approches à cet égard. ..
OmerGertel, merci pour cette approche. Je vais devoir creuser pour voir si je peux l'étendre pour faire des changements comme vous le suggérez. Mon rêve serait d'avoir Django (ou au moins mon extension) capable de supporter "créer, modifier, tronquer, etc". Je pense que cela ouvrirait un tout nouveau domaine d'utilisations pour cela. Merci encore pour vos commentaires et vos pensées. –