【问题标题】:How to add a table from a view in Django如何从Django中的视图添加表
【发布时间】:2013-11-02 05:54:58
【问题描述】:

在 Django 中,我正在为一个站点测试一些架构,其中一个特性是用户将能够发表本质上相当于博客文章的内容。我最初的想法是有一个名为Post 的模型,并用所有用户的每个帖子填充该表,并使用一个ID 来链接哪个帖子与哪个用户相关联。这会不会效率低下,因为每个查询都必须搜索一个可能很大的表?

另外,我有一个想法,每次创建用户时,将该用户添加到 users 表,然后创建一个名为 Posts_by_<user-id> 的新表。然后查询不是查询一个庞大的表,而是查找与该用户关联的Posts_by_ 表,并且要解析的数据块要小得多。拥有大量小桌子而不是一张大桌子更有效吗?

所以我的问题有两个:

1) 在 Django 中,是否可以从 view.py 文件而不是 models.py 在我的数据库中生成表? 2) 无论框架如何,上述方法是结构化数据库的有效方法吗?

【问题讨论】:

    标签: sql database django database-design


    【解决方案1】:

    可以使用原始 SQL 或使用内部 Django DB API。但这不是一个好主意,这就是为什么在 Django 中没有官方支持的方式。

    数据库的设计旨在让您快速访问您的数据。如果您知道您经常会通过用户 ID 检索数据,您应该在该字段上创建索引 - 这将告诉数据库创建一个单独的数据结构,该结构将跟踪如何快速查找特定用户的行。

    在 Django 中,在单个字段上创建索引看起来像这样:

    user = models.ForeignKey(User, db_index=True) 
    

    更新: 正如 btoueg 在 cmets Django does this automatically for ForeignKey fields 中指出的那样。因此,您只需要为其他字段以及在使用其他框架时手动执行此操作。当然只有在适当的时候——你通常肯定不希望在每个字段上都有一个索引。

    【讨论】:

    猜你喜欢
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-28
    • 2020-09-10
    • 1970-01-01
    • 1970-01-01
    • 2016-08-18
    相关资源
    最近更新 更多