Django为模型定义了一个基本查询集过滤器

时间:2014-08-02 19:32:05

标签: django django-models

我为我正在构建的应用程序定义了一个基础创建模型。它标有User和Company引用,并且每个继承此类的模型都属于公司(这是经过精心设置的,因此不会发生冲突)。 我现在要做的是让用户选择一个几乎像“数据集”的公司,并从查询中筛选出不属于该公司的模型。

我知道我必须在基类中使用某种自定义管理器。我是朝着正确的方向吗?这甚至可行吗? 这是一种简单的方法来共享一些模型,并根据会话或数据库中可能存在的值设置来分离其他模型。

我没有示例代码,因为我找不到任何引导开头。

我的基本模型如下所示:

class CompanyStampedModel(models.Model):
    company = models.ForeignKey(Company, related_name='+', null=True, blank=True)

    # Here I would like to be able to define a custom manager to filter out
    # the models in any query (that uses the ORM).Can I override the objects manager?

    class Meta:
        abstract = True

1 个答案:

答案 0 :(得分:0)

对于遇到类似问题的任何人,我就这样做了:

class CompanyUserStampedModelManager(models.Manager):

def get_queryset(self):
    queryset = super(CompanyUserStampedModelManager, self).get_queryset()
    #custom filtering here
    return queryset


class CompanyUserTimestampedModel(UserTimestampedModel, EmpresaStampedModel):

    objects = EmpresaUserStampedModelManager()

这在每次查询中都成功地将它们过滤掉了