允许用户在django模型上创建作用域的mixin。
django-easy-scoping的Python项目详细描述
django easy scoping允许您在 你的Django模特。
安装
要获取ScopingMixin.py
文件,可以下载它或使用pip。
下载文件
从GITHUB下载SCOMPIN MIXIN文件。 ScopingMixin.py
从ScopingMixin.py
导入ScopingMixin
和ScopingQuerySet
。
from<pathtofile>.ScopingMixinimportScopingMixin,ScopingQuerySet
使用pip
$ pip install django-easy-scoping
从ScopingMixin.py
导入ScopingMixin
和ScopingQuerySet
。
fromDjangoEasyScoping.ScopingMixinimportScopingMixin,ScopingQuerySet
实施
将ScopingMixin
与要为其创建作用域的django模型混合。
classPurchase(ScopingMixin,models.Model):
使用ScopingQuerySet
覆盖该模型的queryset。
objects=ScopingQuerySet.as_manager()
完成!
使用现有的管理器/查询集< /H2>实现
如果您想继续使用自己的自定义管理器/queryset,那么您可以!
如果要将作用域QuerySet重写命名为
不是objects
的东西,例如:
other_name=ScopingQuerySet.as_manager()
然后在sites-packages
中打开ScopingMixin.py
,然后编辑以下内容
方法。
classScopingMixin(object):@classmethoddefget_scope(cls,name)ifhasattr(cls,'__scopes__')andnameincls.scopes():returngetattr(cls.objects.all(),name)@classmethoddefget_aggregate(cls,name)ifhasattr(cls,'__aggregate__')andnameincls.aggregates():returngetattr(cls.objects.all(),name)
变成
classScopingMixin(object):@classmethoddefget_scope(cls,name)ifhasattr(cls,'__scopes__')andnameincls.scopes():returngetattr(cls.other_name.all(),name)@classmethoddefget_aggregate(cls,name)ifhasattr(cls,'__aggregate__')andnameincls.aggregates():returngetattr(cls.other_name.all(),name)