【问题标题】:Setting models to specific database in django在 django 中将模型设置为特定数据库
【发布时间】:2015-10-10 09:09:28
【问题描述】:

我想问一下如何将模型设置为特定的数据库。 我还是 django 的新手,在 Django 网站上阅读了有关 Database Routing 的信息,我有 2 个模型,userModadminMod
userMod 应该转到数据库 userDB .
adminMod 应该转到数据库 adminDB
但是当我迁移它时,两个表都存在于两个数据库中。 我已经在 meta 中包含了app_label,但它仍然无法正常工作。 我正在使用 django 1.8


编辑: 我只是在 userDB 上尝试了一段时间,最终将它与 adminDB 一起使用。 这是我的代码:

路由器.py

class router(object):

def db_for_read(self, model, **hints):
    if model._meta.app_label == 'userDB':
        return 'userDB'
    return None

def db_for_write(self, model, **hints):
    if model._meta.app_label == 'userDB':
        return 'userDB'
    return None

def allow_relation(self, obj1, obj2, **hints):
    if obj1._meta.app_label == 'userDB' or\
        obj2._meta.app_label == 'userDB':
            return True
        return None

def allow_migrate(self, db, app_label, model=None, **hints):
    if app_label == 'userDB':
        return db == 'userDB'
    return None

【问题讨论】:

  • 您好,请插入您的代码以获得更清晰的信息。阅读本文以改善您的问题,以便我们更好地帮助您。 stackoverflow.com/help/mcve
  • 你能粘贴你的数据库路由器的代码吗?

标签: python django django-models django-orm


【解决方案1】:

试试这个:

class userMod(models.Model):
   name = models.CharField(max_length=120)

   class Meta:
      db_table='userDB'

【讨论】:

  • 嗨@Geo Jacob。感谢您的建议,但不幸的是这不起作用。这两个表仍然存在于userDB
  • 我没有尝试过,但这可能会对您有所帮助。 stackoverflow.com/questions/18547468/…
【解决方案2】:

记得在 settings.py 中告诉 django 你的数据库路由器

https://docs.djangoproject.com/en/1.8/topics/db/multi-db/

搜索 DATABASE_ROUTERS 设置

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    • 2021-07-21
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    相关资源
    最近更新 更多