1

Django ORM 是否定义了一个构造,该构造从给定表的指定列下的每一行生成表?

示例:假设我们有下表。

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

name现在我想要一个从in下的每一行创建一个表的对象Person。对于JohnandIsaac条目,这会让我:

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 回答