Python 合并django经理
我有两个django经理 投票经理 软删除管理器Python 合并django经理,python,django,django-models,django-managers,Python,Django,Django Models,Django Managers,我有两个django经理 投票经理 软删除管理器 如何从VoteManager.all\u with\u vote\u info,SoftDeleteManager.all\u active,以及任意数量的管理器方法链接查询集结果?找到了一个解决方案:PassThroughManager 更新: PassThroughManager已被弃用,请使用Django内置的QuerySet.as\u manager()和/或manager.from\u QuerySet()实用程序。使用此方法,多态性
如何从
VoteManager.all\u with\u vote\u info
,SoftDeleteManager.all\u active
,以及任意数量的管理器方法链接查询集结果?找到了一个解决方案:PassThroughManager
更新:
PassThroughManager
已被弃用,请使用Django内置的QuerySet.as\u manager()
和/或manager.from\u QuerySet()
实用程序。使用此方法,多态性QuerySet方法将全部可用,然后我们可以从TimeSeriesSet注册其他方法
class UserPartQuerySet(PolymorphicQuerySet, TimeSeriesQuerySet):
def prefetch_latest(self, *related_names):
return TimeSeriesQuerySet.prefetch_latest(self, *related_names)
def filter_outdated(self, *related_names):
return TimeSeriesQuerySet.filter_outdated(self, *related_names)
def update_timeseries(self, related_name, collector, force=False):
return TimeSeriesQuerySet.update_timeseries(
self,
related_name,
collector,
force=False
)
我们可以举出一些例子,说明如何使用as_manager from_queryset方法组合两个第三方管理器/查询集吗?为什么还要重写这些方法?
class SoftDeleteManager(models.Manager):
def all_active(self):
qs = super(SoftDeleteManager, self).get_query_set()
qs = qs.filter(time_deleted=None)
return qs
....
class UserPartQuerySet(PolymorphicQuerySet, TimeSeriesQuerySet):
def prefetch_latest(self, *related_names):
return TimeSeriesQuerySet.prefetch_latest(self, *related_names)
def filter_outdated(self, *related_names):
return TimeSeriesQuerySet.filter_outdated(self, *related_names)
def update_timeseries(self, related_name, collector, force=False):
return TimeSeriesQuerySet.update_timeseries(
self,
related_name,
collector,
force=False
)