Django - 将所有模型指定为非托管的全局设置

问题描述 投票:0回答:2

我正在编写一个 Django 应用程序,但有一个单独的过程来创建/管理表。 换句话说,我不希望 Django 管理任何数据库表。 为了实现这一点,我在

managed = False
类中使用
Meta
,例如:

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 managed
2个回答
1
投票

我不太确定该怎么做。最好将它们全部标记为

managed = false
,这样就更明确了。

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

from settings import *

class DisableMigrations(object):
    def __contains__(self, item):
        return True

    def __getitem__(self, item):
        return 'notmigrations'

MIGRATION_MODULES = DisableMigrations()

1
投票

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

python manage.py inspectdb > yourapp/models.py

默认情况下,您在每个模型类中都会获得 Managed = False。

© www.soinside.com 2019 - 2024. All rights reserved.