データベース テーブルを定義し、Django API を介してそれらを変更する方法を探していました。
たとえば、テーブル DDL を直接操作するコードを記述して、必要に応じて (syncdb を実行せずに) テーブルを定義したり、テーブルに列を追加したりしたいと考えています。django-south と django-evolution が頭に浮かぶかもしれませんが、これらのツールをアプリケーションに統合してエンドユーザーが使用することを意図したツールとは考えていません...むしろ、これらのツールは次の目的で使用されるユーティリティですデータベース テーブルをアップグレードします。次のようなことができる場所を探しています:
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
これは、そのような API がどのように機能するかを示すおもちゃの例にすぎませんが、要点は、このようなテーブルをプログラムで作成および変更する方法があるかどうかを知りたいということです。これは、新しいテーブルを動的に作成する必要があるコンテンツ管理システムなどに役立つ場合があります。もう 1 つの例は、任意の幅のデータセットを格納するサイトで、そのためにインターフェイスまたはデータ インポートによってテーブルを動的に生成する必要があります。このようなテーブルを動的に作成および変更する良い方法を知っている人はいますか?
(確かに、データベースに対して直接 SQL ステートメントを実行できることは知っていますが、そのソリューションにはデータベースをオブジェクトとして扱う機能がありません)
人々がこれに対する提案やアプローチを持っているかどうかに興味があります...