所以我有两个django模型,但是其中一个具有我需要排除称为代码的字段。我还没有找到一种使用序列化程序类排除此字段的方法。
class ModelA(models.Model):
modelBs = models.ManyToManyField('ModelB')
class ModelB(models.Model):
# assume all sorts of fields here like name, location, etc..
code = models.CharField(max_length=200)
我的问题是,像这样序列化模型A时,我不能排除模型B代码:
class ModelASerializer(serializers.ModelSerializer):
class Meta:
model = ModelA
exclude = ('modelBs__code')
上面的序列化器不起作用。有人知道该怎么做吗?
我当前的输出是:
[
{
modelBs: [
{name: "Something", code: "XXXX"}
]
}
]
我想要的输出是:
[
{
modelBs: [
{name: "Something"}
]
}
]
答案 0 :(得分:1)
您需要将排除项放在ModelBSerializer
中。
class ModelASerializer(serializers.ModelSerializer):
modelBs = ModelBSerializer(read_only=True, many=True)
class Meta:
...
class ModelBSerializer(serializers.ModelSerializer):
class Meta:
...
exlude = ("code",)