我正在Django开发一些项目,用来管理仓库中的资产。我想用两个数据库来解决这个问题。首先是sqlite数据库,它包含关于用户的任何数据。第二个是mongoDB数据库,它希望存储与资产相关的所有数据。问题是,如何告诉我的模型类,他们应该使用哪个数据库(负责用户注册等的模型,负责管理资产数据的模型- mongoDB)?我读过关于DATABASE_ROUTERS和使用Meta类的文章,但是它是Django支持的数据库的解决方案(或者我可能不知道什么),我不知道将它与mongoengine集成是否是好的和可能的。
谢谢你的小费!
发布于 2016-11-22 22:14:34
我找到了一个解决办法,很简单。如果您希望您的模型使用mongoDB数据库,只需创建模型类女巫Document参数(或EmbeddedDocument,例如class Magazine(Document):)。但是,如果您喜欢定义默认的数据库类型,只需创建类,比如django文档(例如class Person(models.Model):)。
发布于 2016-11-15 06:00:53
这可能对你有帮助:
我完全同意使用数据库路由器。我所做的是,我使用了单个管理界面来处理多个数据库。注意,所有应用程序的身份验证都存储在默认数据库中。
Settings.py
# Define the database manager to setup the various projects
DATABASE_ROUTERS = ['manager.router.DatabaseAppsRouter']
DATABASE_APPS_MAPPING = {'app1': 'db1',
'app2':'db2'}
DATABASES = {
#For login authentication of both app I have used postgres sql
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'fail_over',
'USER': 'SomeUser',
'PASSWORD': 'SomePassword',
'HOST': '127.0.0.1',
'PORT': '',
},
# Set this parameters according to your database configuration
'db1': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(PROJECT_DIR, 'yourdatabasename.db'),
},
# Set this parameters according to your database configuration
'db2' : {
'ENGINE' : 'django_mongodb_engine',
'NAME' : 'my_database'
}
}样本模型
# Create your models here for app1.
class Modelapp1(models.Model):
field1 = models.TextField(max_length=100)
field2 = models.TextField(max_length=200)
class Meta:
app_label = 'app1'
def __unicode__(self):
return self.field1
# Create your models here for app2.
class Modelapp2(models.Model):
field1 = models.CharField(max_length=25)
class Meta:
app_label = 'app2'
def __unicode__(self):
return self.fieldhttps://stackoverflow.com/questions/40602640
复制相似问题