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

uklbhaso  于 2023-06-07  发布在  Go
关注(0)|答案(1)|浏览(144)

我已经为我正在构建的应用程序定义了一个基础模型。它使用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
pwuypxnk

pwuypxnk1#

对于任何面临类似问题的人,我是这样做的:

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()

这成功地在每个查询中过滤掉了它们

相关问题