Django REST Framework - Получение обратного значения поля boolean в сериализаторе

У меня есть 2 модели:

class Model(models.Model):
...

    related = models.ForeignKey(
        'RelatedModel',
        on_delete=models.CASCADE,
        related_name='related_model'
    )

class RelatedModel(models.Model):
...

    flag = models.BooleanField()

Мне нужно передать значение атрибута 'flag' RelatedModel в сериализаторе экземпляра Model и дополнительно это значение должно быть обратным, т.е. если оно равно 'True', я должен вернуть 'False' как тип данных boolean.

Уже реализовал это с помощью метода:

class ModelSerializer(serializers.ModelSerializer):
    ...
    flag = serializers.SerializerMethodField()

    @staticmethod
    def get_flag(obj):
        return not obj.related.flag

    class Meta:
        model = Model
        fields = (
            ...
            flag
        )

Но, может быть, есть возможность использовать только поля сериализатора как это, но с обратным значением?

flag = serializers.BooleanField(
        source='related.flag', read_only=True
    )

Если вам нужно обратить значение, вы не можете использовать BooleanField, самое простое решение - использовать SerializerMethodField, как вы уже сделали. Или вы можете также создать класс пользовательского поля, но это сложнее.

Вернуться на верх