【问题标题】:Does the Django ORM have a construct defined that generates tables from each row under a specified column from a given table?Django ORM 是否定义了一个构造,该构造从给定表的指定列下的每一行生成表?
【发布时间】:2012-10-30 15:49:22
【问题描述】:

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

示例: 假设我们有下表。

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

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

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

【问题讨论】:

    标签: python database django orm django-models


    【解决方案1】:

    不,没有。库存 django 表是由“syncdb”命令创建的,它的 ORM 不处理表的动态添加或修改。

    【讨论】:

      【解决方案2】:

      据我所知,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 代码中创建年龄差异。这也会更直观。

      【讨论】:

        猜你喜欢
        • 2014-09-30
        • 2013-03-23
        • 1970-01-01
        • 2012-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-10
        • 1970-01-01
        相关资源
        最近更新 更多