Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 合并django经理_Python_Django_Django Models_Django Managers - Fatal编程技术网

Python 合并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()实用程序。使用此方法,多态性

我有两个django经理

投票经理 软删除管理器
如何从
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
        )