【问题标题】:Django: get table name of a model in the model manager?Django:在模型管理器中获取模型的表名?
【发布时间】:2014-05-01 08:42:18
【问题描述】:

我有一个模型,并且有一个模型管理器负责这个模型。我在模型管理器中写了一些sql,我需要sql中模型的表名。我知道表的名称是由元数据 app_label 和 db_name 组合而成的,但是我可以从管理器类中访问它们吗?我知道我可以在管理器中创建模型实例,但我宁愿不这样做..

非常感谢!

【问题讨论】:

    标签: django


    【解决方案1】:

    模型经理有model字段:

    Model.objects.model._meta.db_table
    

    【讨论】:

    • 为什么不只是Model._meta.db_table
    【解决方案2】:

    假设您有一个名为Service的模型

    你可以使用

    Service._meta.db_table # this will work too
    

    这也是

    Service.objects.model._meta.db_table # this will work too
    

    这也是
    假设您有一个像这样的Model 服务实例

    service = Service.objects.get(pk=1)
    # get table name like this
    table_name = service._meta.db_table # this will work too
    

    【讨论】:

      【解决方案3】:

      对于给定的instance,您可以使用instance._meta.db_table,但这也适用于模型类,所以如果您可以从经理升级到它的model,那也可以使用

      【讨论】:

        猜你喜欢
        • 2021-04-05
        • 1970-01-01
        • 2016-11-24
        • 1970-01-01
        • 2017-02-20
        • 2013-04-20
        • 2019-01-14
        • 1970-01-01
        • 2011-04-05
        相关资源
        最近更新 更多