我正在使用Django系统,其中每个模型都有一个关联的序列化程序(相当标准)。
在一个模型中,序列化器如下:
class ThingSerializer(ModelSerializerWithFields):
class Meta:
model = Thing
fields = "__all__"
和模型:
class Thing(models.Model):
class Meta:
ordering = ("a", "b")
thing_id = models.UUIDField(primary_key=True, default=uuid.uuid4, blank=True, editable=False)
a = models.FloatField(null=True, blank=True, default=None)
b = models.FloatField(null=True, blank=True, default=None)
我要实现一个系统:如果a
的字段Thing
不为空,则返回字段b
(例如,在GET
请求中) ,如果a
为空,则不返回b
。
我该如何(在哪里)执行此操作?
答案 0 :(得分:2)
您可以在序列化程序上覆盖to_representation()
方法。像这样:
class ThingSerializer(serializers.ModelSerializer):
...
def to_representation(self, instance):
data = super().to_representation(instance)
if instance.a is None:
del data['b']
return data