Метод пользовательского менеджера Django, возвращающий объект по запросу значения

Я пытаюсь сделать метод для модели "Clase", который возвращает "Clase", чье значение "codigo" соответствует аргументу. На данный момент у меня есть следующее:

class CodigoClaseManager(models.Manager):
"""
Custom manager that enables geting a Clase by codigo
"""
def get_by_code(self, code):
    return super(CodigoClaseManager,self).get_query_set().filter(codigo=code)

class Clase(models.Model):
    nombre = models.CharField(max_length=100)
    codigo = models.CharField(max_length=100)
    byCode = CodigoClaseManager

    def __str__(self):
        return self.nombre

    class Meta:
        managed = True
        db_table = 'clases'

Моя проблема в том, что когда я пытаюсь вызвать этот метод get_by_value, он всегда говорит мне, что аргумент "self" отсутствует.

>>> Clase.byCode.get_by_code(code="1234")
Traceback (most recent call last):
  File "<console>", line 1, in <module>
TypeError: get_by_code() missing 1 required positional argument: 'self'

Я использую неправильный подход или это ошибка в моем коде? Я недавно начал изучать django и буду очень признателен за помощь, спасибо.

Вы должны построить объект CodigoClaseManager, поэтому вызовите конструктор:

class Clase(models.Model):
    nombre = models.CharField(max_length=100)
    codigo = models.CharField(max_length=100)
    byCode = CodigoClaseManager()  # 🖘 call the constructor
    
    # …
Вернуться на верх