3

我有几个 django 应用程序:

INSTALLED_APPS = (
    'geonode.exposure',
    'geonode.isc_viewer',
    'geonode.geodetic',
    'geonode.observations',
    'geonode.ged4gem',

我需要管理所有这些,除了一个syncdb。我怎样才能syncdb故意跳过geonode.exposure申请?

更新: 我没有描述完整的配置,请允许我更详细地介绍:我正在使用 south 来管理除曝光之外的所有应用程序的数据库迁移和固定装置。曝光应用程序正在访问外部数据库并使用路由器来执行此操作(这就是我希望它被 syncdb 跳过的原因)。我的路由器设置如下所示:

class GedRouter(object):
    def db_for_read(self, model, **hints):
        "Point all operations on ged models to 'geddb'"
        if model._meta.app_label == 'exposure':
            return 'geddb'
        return 'default'

    def allow_syncdb(self, db, model):
        if db == 'geddb' or model._meta.app_label == "ged":
            return False # we're not using syncdb on our legacy database
        else: # but all other models/databases are fine
            return True

南方不尊重allow_syncdb方法吗?是因为我没有迁移,所以在曝光应用程序上运行 syncbd 吗?

4

3 回答 3

5

您可以managed = False在模型的Meta类中使用。这样,syncdb 不会创建应用程序的表。有关文档的更多信息。

于 2013-01-30T14:09:46.400 回答
1

有一个模型元选项“托管”,有关更多信息,请查看 django 文档:

https://docs.djangoproject.com/en/dev/ref/models/options/#managed

于 2013-01-30T14:10:41.270 回答
1

好的,这不是您直接要求的,但请考虑使用 South http://south.aeracode.org

您可以决定哪些应用程序包含要迁移的模型版本等。听起来您需要一个解决方案。

于 2013-01-31T00:17:16.227 回答