如何(有意)跳过使用Django syncdb的应用程序

如何(有意)跳过使用Django syncdb的应用程序,django,django-models,django-south,Django,Django Models,Django South,我有几个django应用程序: INSTALLED_APPS = ( 'geonode.exposure', 'geonode.isc_viewer', 'geonode.geodetic', 'geonode.observations', 'geonode.ged4gem', 我需要使用syncdb管理除一个之外的所有数据库。 如何让syncdb故意跳过geonode.exposure应用程序 更新: 我没有描述完整的配置,请允许我详细说明: 我正在使

我有几个django应用程序:

INSTALLED_APPS = (
    'geonode.exposure',
    'geonode.isc_viewer',
    'geonode.geodetic',
    'geonode.observations',
    'geonode.ged4gem',
我需要使用
syncdb
管理除一个之外的所有数据库。 如何让
syncdb
故意跳过
geonode.exposure
应用程序

更新: 我没有描述完整的配置,请允许我详细说明: 我正在使用south管理除exposure之外的所有应用程序的db迁移和设备。 exposure应用程序正在访问外部数据库,并且正在使用路由器来访问(这就是为什么我希望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方法吗?south是否正在exposure应用程序上运行syncbd,因为我没有对其进行迁移?

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

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


< P> >好,这不是你直接问的问题,但请考虑使用南方


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

您可以尝试从文件夹中删除
\uuuu init\uuuuuuy.py
文件。没问题,很高兴它有帮助!我原以为这样行得通,但仔细看了一下,没什么大不了的。我还尝试一起删除models.py,但syncdb给了我:django.core.exceptions.impropertlyconfigured:importErrorGeonode.exposure:没有名为exposure的模块您还可以从settings.py中删除应用程序,然后再从syncdb中添加应用程序。我的解决方案失败了什么?