【问题标题】:Django sqlall <app> not returning anythingDjango sqlall <app> 不返回任何内容
【发布时间】:2013-07-11 04:56:14
【问题描述】:

今天遇到了一个小问题。通过一些研究很容易解决,但想把它扔在这里,以防有人有类似的东西。

我的应用文件布局是这样的:

>cart
-->Models
----> __init__.py
----> cart.py
----> items.py
--> __init__.py

显然,我没有标准的models.py 文件。我想运行python manage.py sqlall cart 以查看将其插入我的SQL Server 数据库的sql 代码。问题是,每次我运行该代码时,它都没有返回任何内容。解决方法是什么?

【问题讨论】:

    标签: sql django models


    【解决方案1】:

    嗯,这是有道理的,因为它正在寻找一个 models.py 文件而没有找到一个,只有 Models 子模块。

    您必须在每个子模型项上使用app_label。所以cart.pyitems.py 文件都需要编辑它们的Meta 标签才能拥有:

    class Meta:
        app_label="cart"
    

    这告诉 Django 这个模型明确地属于那个应用程序。正如 Django 文档所说,

    如果模型存在于标准 models.py 之外(例如,如果 应用程序的模型在 myapp.models 的子模块中),模型必须 定义它属于哪个应用程序

    然后,sqlall &lt;app&gt; 命令也应该按照您的意愿工作。

    【讨论】:

    • 这可能是 Django 中最烦人的事情。每当您偏离拥有单个 models.py 文件时,app_label 都是必需的 AFAICT。 sql 命令的输出并未暗示模型已找到但未加载,这非常令人沮丧。感谢您发布问题和解决方案!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-08
    • 1970-01-01
    • 2018-10-06
    • 1970-01-01
    • 2020-04-27
    • 2019-04-06
    • 2012-02-15
    相关资源
    最近更新 更多