Возможно, вам следует реализовать это путем определения настраиваемого менеджера для вашего класса и добавления двух методов менеджера для этого менеджера (который, я считаю, является предпочтительным способом добавления функциональности на уровне таблицы для любой модели). Однако, другой способ сделать это - добавить два метода класса в ваш класс, которые запрашивают и возвращают результирующие объекты, такие как:
class Status(models.Model):
code = models.IntegerField()
text = models.CharField(maxlength=255)
@classmethod
def successful(cls):
return cls.objects.get(code=0)
@classmethod
def failed(cls):
return cls.objects.get(code=1)
Обратите внимание, что get()
может выдавать различные исключения, такие как Status.DoesNotExist
и MultipleObjectsReturned
.
А для примера реализации того, как сделать то же самое с помощью менеджеров Django, вы можете сделать что-то вроде этого:
class StatusManager(models.Manager):
def successful(self):
return self.get(code=1)
def failed(self):
return self.get(code=0)
class Status(models.Model):
code = models.IntegerField()
text = models.CharField(maxlength=255)
objects = StatusManager()
Где вы можете сделать Status.objects.successful()
и Status.objects.failed()
, чтобы получить то, что вы хотите.