Метод свойства и другие методы в моделях django

Я время от времени использую метод свойства и понимаю его назначение. По сути, он действует так же, как поле, но без фактического создания столбца в db, и к нему можно легко получить доступ в сериализаторе как к полям модели. Но как можно получить доступ к другим методам, подобно этой функции baby_boomer модели Person, приведенной ниже? Как к ней можно получить доступ в сериализаторе, а также в представлении или наборе запросов?

class Person(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    birth_date = models.DateField()

    def baby_boomer_status(self):
        "Returns the person's baby-boomer status."
        import datetime
        if self.birth_date < datetime.date(1945, 8, 1):
            return "Pre-boomer"
        elif self.birth_date < datetime.date(1965, 1, 1):
            return "Baby boomer"
        else:
            return "Post-boomer"

    @property
    def full_name(self):
        "Returns the person's full name."
        return '%s %s' % (self.first_name, self.last_name)

Передайте параметр source в поле сериализатора для доступа к методу на модели, метод должен принимать только один параметр self

class PersonSerializer(serializers.ModelSerializer):

    foo = serializers.CharField(source='baby_boomer_status', read_only=True)

    class Meta:
        model = Person
        fields = ['field_a', 'field_b']
Вернуться на верх