【问题标题】:Django - global setting to specify all models as non-managedDjango - 将所有模型指定为非托管的全局设置
【发布时间】:2018-03-15 20:21:35
【问题描述】:

我正在编写一个 Django 应用程序,但有一个单独的过程来创建/管理表。换句话说,我不希望 Django 管理任何数据库表。为此,我在Meta 类中使用managed = False,例如:

class School(models.Model):

    schoolid = models.IntegerField(primary_key=True)
    schooldisplayname = models.CharField(max_length=100)
    address = models.CharField(max_length=100)
    city = models.CharField(max_length=100)
    department = models.CharField(max_length=100)

    class Meta:
        managed = False

但是必须始终为每个模型指定这一点很烦人。默认情况下,有没有办法将此作为全局设置应用于我的所有模型?

【问题讨论】:

    标签: django global meta managed


    【解决方案1】:

    我不太确定如何做到这一点。将它们全部标记为managed = false 可能会更好,所以它是明确的。

    您可以在设置中全局禁用迁移。不太一样……

    from settings import *
    
    class DisableMigrations(object):
        def __contains__(self, item):
            return True
    
        def __getitem__(self, item):
            return 'notmigrations'
    
    MIGRATION_MODULES = DisableMigrations()
    

    【讨论】:

    • 谢谢,我不知道这个。但我会坚持显式声明,以防万一。
    【解决方案2】:

    虽然我不确定如果您正在寻找一种快速方法来为现有模型标记 managed=False 是否存在全局方法。你可以这样做。

    python manage.py inspectdb > yourapp/models.py
    

    默认情况下,每个模型类中的 managed = False。

    【讨论】:

    • 感谢您的提示。
    猜你喜欢
    • 1970-01-01
    • 2014-07-02
    • 1970-01-01
    • 2015-11-01
    • 2014-12-24
    • 1970-01-01
    • 1970-01-01
    • 2012-10-15
    • 2013-09-10
    相关资源
    最近更新 更多