如何(有意)跳过使用Django syncdb的应用程序
我有几个django应用程序:如何(有意)跳过使用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应用程序 更新: 我没有描述完整的配置,请允许我详细说明: 我正在使
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中添加应用程序。我的解决方案失败了什么?