Django REST Framework - 在序列化程序中获取布尔字段的反转值
Django REST Framework - Get reversed value of boolean field in serializer
我有 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 属性的 'flag' 值,另外这个值必须反转,即如果它是 'True',我应该 return 'False' 作为布尔数据类型。
已经用方法实现了:
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
,就像您已经做过的那样。或者您也可以创建一个自定义字段 class,但那样会更复杂。
我有 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 属性的 'flag' 值,另外这个值必须反转,即如果它是 'True',我应该 return 'False' 作为布尔数据类型。
已经用方法实现了:
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
,就像您已经做过的那样。或者您也可以创建一个自定义字段 class,但那样会更复杂。