Django为模型定义一个基本queryset过滤器
我为正在构建的应用程序定义了一个基础模型。它带有用户和公司引用的戳记,继承该类的每个模型都属于一个公司(这是经过仔细设置的,以避免发生冲突)。 我现在想做的是让用户选择一个几乎像“数据集”一样的公司,并从查询中筛选出不属于该公司的模型 我知道我必须在基类中与某种自定义管理器一起工作。我的方向对吗?这是否可行? 这是一种简单的方法,可以共享一些模型,并根据可能在会话或数据库中设置的值分离其他模型 我没有样本代码,因为我找不到任何线索开始 我的基本模型如下所示:Django为模型定义一个基本queryset过滤器,django,django-models,Django,Django Models,我为正在构建的应用程序定义了一个基础模型。它带有用户和公司引用的戳记,继承该类的每个模型都属于一个公司(这是经过仔细设置的,以避免发生冲突)。 我现在想做的是让用户选择一个几乎像“数据集”一样的公司,并从查询中筛选出不属于该公司的模型 我知道我必须在基类中与某种自定义管理器一起工作。我的方向对吗?这是否可行? 这是一种简单的方法,可以共享一些模型,并根据可能在会话或数据库中设置的值分离其他模型 我没有样本代码,因为我找不到任何线索开始 我的基本模型如下所示: class CompanyStamp
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
对于任何面临类似问题的人,我就是这样做的:
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()
这成功地在每个查询中过滤掉了它们