【问题标题】:Django Model subclass without changing database nameDjango Model 子类而不更改数据库名称
【发布时间】:2010-07-18 18:22:28
【问题描述】:

我正在制作一个 Django 模型装饰器,它采用 Django 模型并为其提供一些额外的方法。

Django 使用:'%s_%s' % (app_name, class_name) 为该模型创建数据库名称。当你装饰模型时,表名突然从装饰器的应用名称和类名派生而不是原始类(这在 python 上是正确的)。

但是我想保持模型的原始表名,有没有办法告诉 Django 使用超类来确定数据库名称,或者有办法检索表名并将其应用到模型的 @ 987654322@班级。

【问题讨论】:

    标签: django django-models


    【解决方案1】:

    您可以在class Meta: 中覆盖它

    http://docs.djangoproject.com/en/1.1/ref/models/options/#django.db.models.Options.db_table

    要使用超类的规范创建新模型,请查看proxy = True

    http://docs.djangoproject.com/en/1.1/topics/db/models/#id8

    【讨论】:

    • 是的,但是用什么覆盖它。我可以获得超类的名称和应用程序名称,但是我假设它还没有被覆盖。如果有办法获取超类的表名并将db_table 设置为该名称,它就可以工作。
    • 谢谢eruciform,我也发现了。 proxy = True 成功了!
    猜你喜欢
    • 2011-03-30
    • 1970-01-01
    • 2019-09-13
    • 2021-03-29
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多