На самом деле, я бы поставил is_metro_sample_eligible()
на Subdivision
, поскольку каждый вызов должен иметь доступ к экземпляру.
class Subdivision(models.Model):
def is_metro_sample_eligible(self):
"""Are we eligible for sampling taking into account the 90 day windows"""
#TODO do something useful here and return true or false
return True
А затем я бы либо переместил get_available_subdivisions()
и get_available_sampling_subdivisions()
навашу builder_org
модель
from .models import Subdivision
class BuilderOrg(models.Model):
#whatever you have goes here
def get_available_subdivisions(self, metro):
"""Return all potential subdivisions for a builder in a metro"""
return Subdivision.objects.filter(builder_org=self,
metro=metro)
def get_available_sampling_subdivisions(self, metro):
"""Return Subdivision which are able to participate in metro sampling"""
return Subdivision.objects.filter(builder_org=self,
metro=metro,
use_sampling = True,
use_metro_sampling = True)
или оставьте ее на менеджере и измените подпись на get_available_subdivisions(self, builder_org, metro)
.
Обоснование - я мог бы представить, что мне нужно позвонить get_available_subdivisions()
, фактическиSubdivision
уже имеется в виду - очевидно, важная информация - это организация строителей и метро.