【问题标题】:Django REST Framework - Get reversed value of boolean field in serializerDjango REST Framework - 在序列化程序中获取布尔字段的反转值
【发布时间】:2021-12-26 15:44:05
【问题描述】:

我有 2 个模型:

class Model(models.Model):
...

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

class RelatedModel(models.Model):
...

    flag = models.BooleanField()

我需要在模型实例序列化程序中传递 RelatedModel 的“标志”属性的值,此外,这个值必须反转,即如果它是“真”,我应该将“假”作为布尔数据类型返回。

已经用方法实现了:

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
    )

【问题讨论】:

    标签: python django django-rest-framework django-serializer


    【解决方案1】:

    如果您需要反转不能使用BooleanField 的值,最简单的解决方案是使用SerializerMethodField,就像您已经完成的那样。或者您也可以创建一个自定义字段类,但这更复杂。

    【讨论】:

      猜你喜欢
      • 2020-06-09
      • 1970-01-01
      • 2014-01-05
      • 1970-01-01
      • 2016-10-03
      • 2013-11-15
      • 1970-01-01
      • 2017-01-16
      • 2022-11-29
      相关资源
      最近更新 更多