我有一个这样的模型:
class A:
name = models.CharField()
group = models.ForeignKey('SomeModel', null=True, blank=True)
当我对其进行序列化时,我希望serierizer根据“group”字段是否为空而具有不同的格式 . 当然,这可以通过为不同格式使用不同的序列化程序并在View层中根据需要调用它们来实现:
class TypeASerializer(serializers.ModelSerializer)
class Meta:
model = A
fields = ('id', 'name')
class TypeBSerializer(serializers.ModelSerializer)
class Meta:
model = A
fields = ('id', 'name', 'group')
但我想在序列化器层本身处理它,并为此设置一个序列化器 . 那可能吗?
2 回答
你可以覆盖序列化器的get_fields方法
您可以将序列化程序的每个字段声明为
SerializerMethodField
,如下所示: