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
, как вы уже сделали. Или вы можете также создать класс пользовательского поля, но это сложнее.