现在我正在Django下开发一个应用程序,它是WareHouse Management的ERP。主要应用程序是使用SAP Bussiness One制作的。我可以访问SAP(MSSQL Server)中的表,但是我需要在DJANGO dataModel表中使用SAP中的表ITEM构建WareHouse管理,例如:我需要将Django中的DataModel表项与表ITEM SAP同步,而不是反向(DJANGO - > ITEM在SAP [NO!])。
将Django中的DataModel与其他数据库系统或表同步的最佳方法是什么?
我想在Django数据库中保持一致性,因为如果在SAP的Item表中更改某些内容,例如Item Active(true或false),这个更改将反映在Django模型中。
因此,如果SAP表中有新项,则它必须位于Django DataModel表中。
我正在尝试使用简单的Django模型来维护它:
class Items(models.Model):
SapCode =models.CharField(max_length=100)
Name =models.CharField(max_length=250)
Group =models.IntegerField()
Active =models.BooleanField()
我只跟踪以下内容的变化:
新商品(新代码)
名称变更。
群组的变化。
更改状态 在Active
提前致谢!
答案 0 :(得分:1)
Django中确实没有“数据同步的最佳方法”。
真的,这就是你如何设计数据模型。
一些提示:
始终始终在模型上存储创建和修改的日期。这将使同步更容易。我通常这样做:
created_on = models.DateTimeField('Created On', auto_now_add=True)
last_modified = models.DateTimeField('Last Modified', auto_now=True)
有了这两个位(以及你需要存储的所有其他字段),它只是一个问题或编写代码,它将从源系统中检索所有记录并根据您拥有的记录进行检查。这将是一个繁琐的过程,完全是手动的。这类项目没有“django-magic-model-sync”的东西。只需从源中获取记录,根据数据存储检查记录,以及更新需要更新的内容,这是一项艰苦的工作。
答案 1 :(得分:0)
你可以将Django用于多个数据库。
DATABASES = {
'default': {
'NAME': 'app_data',
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'USER': 'postgres_user',
'PASSWORD': 's3krit'
},
'items': {
'NAME': 'items_data',
'ENGINE': 'django.db.backends.mysql',# or what ever Engine
'USER': 'mysql_user',
'PASSWORD': 'priv4te'
}
}
并且您只能同步专用数据库。
./manage.py syncdb --database=items
在您的模型中,您可以像Eg:
一样使用Items.objects.using('items').all()