我刚刚接触到Django Managers,我发现自己正在做这种类型的编程。我正在寻找是否有办法消除明显的重复。我相信我需要定义 useget_query_set
来指代我自己?
非常清楚我的问题。我不得不重复地传递细分,以便找出要从中过滤的行。我认为有一种更简单的方法,我只是不确定它是什么。
谢谢看!!
--- 模型.py
class Subdivision(models.Model):
objects = SubdivisionManager()
--- 管理者.py
class SubdivisionManager(models.Manager):
"""A generic manager with metros"""
def is_metro_sample_eligible(self, subdivision_id):
"""Are we eligible for sampling taking into account the 90 day windows"""
from .models import Subdivision
subdivision = Subdivision.objects.get(id=subdivision_id)
return True
def get_available_subdivisions(self, subdivision_id):
"""Return all potential subdivisions for a builder in a metro"""
from .models import Subdivision
subdivision = Subdivision.objects.get(id=subdivision_id)
return self.filter(builder_org=subdivision.builder_org,
metro=subdivision.metro)
def get_available_sampling_subdivisions(self, subdivision_id):
"""Return Subdivision which are able to participate in metro sampling"""
from .models import Subdivision
subdivision = Subdivision.objects.get(id=subdivision_id)
return self.filter(builder_org=subdivision.builder_org,
metro=subdivision.metro,
use_sampling = True,
use_metro_sampling = True)