我为我正在构建的应用程序定义了一个基础创建模型。它标有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
答案 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()
这在每次查询中都成功地将它们过滤掉了