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

时间:2013-01-30 14:04:05

标签: django django-models django-south

我有几个django应用程序:

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

除了syncdb之外,我需要管理所有这些内容。 如何让syncdb故意跳过geonode.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方法吗?在曝光应用程序上向南运行syncbd,因为我没有迁移它?

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

好的,这不是您直接询问的内容,但请考虑使用南http://south.aeracode.org

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