1

Django ORMには、特定のテーブルから指定された列の下の各行からテーブルを生成する構造が定義されていますか?

例: 次の表があるとします。

Table: Person
id|name  |age
-------------
1 |John  |60      
2 |Isaac |24    
3 |Fred  |50      
4 |Will  |35  

の各行からテーブルを作成するオブジェクトが必要nameですPersonJohnとエントリの場合、Isaacこれは私を得るでしょう:

Table: John
id|name  |age_diff
------------------
1 |Isaac |36
2 |Fred  |10
3 |Will  |25

Table: Isaac
id|name  |age_diff
-------------------
1 |John  |36
2 |Fred  |26
3 |Will  |11
4

2 に答える 2

2

いいえ、ありません。在庫のdjangoテーブルは「syncdb」コマンドによって作成され、そのORMはテーブルの動的な追加または変更を処理しません。

于 2012-11-10T15:37:25.153 に答える
1

私の知る限り、Django の ORM はテーブルを作成できません。生のSQLステートメントを介してそれを行うことができます:

from django.db import connection, transaction
name = 'John'
cursor = connection.cursor()
cursor.execute('CREATE TABLE '+name+'(id int NOT NULL AUTO_INCREMENT,\
                name VARCHAR(30) NOT NULL, age_diff int NOT NULL,\
                PRIMARY KEY(id))')
transaction.commit_unless_managed()

しかし、それはかなり醜いです。少なくともあなたの例では、これらの追加のテーブルを作成しても意味がないと思います。何の利益もなく、ストレージの膨大な無駄のように思えます。必要なときに Python コードで年齢差を作成することもできます。それはまた、はるかに直感的です。

于 2012-11-10T16:02:56.407 に答える