Python 永久指定模型的使用

Python 永久指定模型的使用,python,django,django-models,Python,Django,Django Models,我有以下型号: class Language(models.Model): code = models.CharField(max_length=6, primary_key=True) language = models.CharField(max_length=20) 我的问题是: Language.objects.using('avails').all() 我如何在模型本身中永久地指定它,这样我就可以只做语言.objects.all()?这里有一个模型管理器,它比单个模

我有以下型号:

class Language(models.Model):
    code = models.CharField(max_length=6, primary_key=True)
    language = models.CharField(max_length=20)
我的问题是:

Language.objects.using('avails').all()

我如何在模型本身中永久地指定它,这样我就可以只做
语言.objects.all()

这里有一个模型管理器,它比单个模型的路由器要简单得多。注意使用
get\u query\u set
代替
get\u queryset
(from)——


现在,您可以直接在模型中指定它,而不是在多个文件(包括修改设置)中指定50多行代码。

您是否尝试覆盖manager的get_queryset?这可能很有用:@PauloPessoa我尝试过这样做,但没有成功。在执行查询集之前(至少在我尝试时),它似乎会检查
db
。如果它没有引起任何问题,您可以将该数据库重新命名为“default”(@mfcovington)-对,但这不是我的默认数据库。就我记忆所及,这种方法存在一些问题,比如链接数据库请求。这个管理器在诸如
Language.objects.filter(code='en')
@Nick之类的查询中是否工作得很好?它似乎工作得不错,下面是一个示例:
>>from apps.main.models import*>>Language.objects.filter(code='en')[]
对于您的情况,覆盖models.manager而不是处理路由是一个更好的解决方案。数据库路由提供了广泛的灵活性,但需要更多的时间来完成配置。
class AvailsDBManager(models.Manager):
    def get_query_set(self):
        return super(AvailsDBManager, self).get_query_set().using('avails')

class Language(models.Model):
    code = models.CharField(max_length=6, primary_key=True)
    language = models.CharField(max_length=20)
    objects = AvailsDBManager()