【问题标题】:What is the value of self._db by default in Django?Django 中默认 self._db 的值是多少?
【发布时间】:2019-08-27 03:27:24
【问题描述】:
请看以下代码:
user.save(using=self._db)
Django 的 self._db 的默认值是多少?
此值是否默认为我在 settings.py 中为数据库默认指定的值?
我在 Stack Overflow 上发现了一些问题,说此值将为 Django 提供数据库类型,但如果我从未明确设置它,默认情况下它是什么?
【问题讨论】:
标签:
django
django-models
django-2.2
【解决方案1】:
Django 默认管理器使用using 参数来定义管理器应该使用哪个数据库进行操作。这将可选地使用。这用于如果您有多个数据库,您可以通过这些数据库定义需要用于操作的数据库。
一个示例user.save(using=self._db) 通常在settings.py 中的数据库配置中定义为“默认”。欲了解更多信息click here
幕后self._db设置为None。如果user.save(using=None),那么它将使用default database.
比如你的数据库配置是这样的
DATABASES = {
'default': {
'NAME': 'app_data',
'ENGINE': 'django.db.backends.postgresql',
'USER': 'postgres_user',
'PASSWORD': '****'
},
'new_users': {
'NAME': 'user_data',
'ENGINE': 'django.db.backends.mysql',
'USER': 'mysql_user',
'PASSWORD': '****'
}
}
如果你想使用默认数据库,那么使用user.save(using=self._db)
如果要使用new_users 数据库,请使用user.save(using="new_users")
【解决方案2】:
是的,它的默认值在settings.py中指定
作为
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mydatabase',
'USER': 'mydatabaseuser',
'PASSWORD': 'mypassword',
'HOST': '127.0.0.1',
'PORT': '5432',
}
}
如上所述here