python - 在 django 序列化程序中排除嵌套模型字段
问题描述
所以我有两个 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"}
]
}
]
解决方案
您需要将排除项放入ModelBSerializer
.
class ModelASerializer(serializers.ModelSerializer):
modelBs = ModelBSerializer(read_only=True, many=True)
class Meta:
...
class ModelBSerializer(serializers.ModelSerializer):
class Meta:
...
exlude = ("code",)
推荐阅读
- c# - 将 OUT 参数打印到 c# winform
- html - 引导按钮在手机屏幕上不起作用
- python - 协调整个组织的包版本
- php - JQuery 将查询发布到两个不同的 php 文件
- discord.py - on_member_join() 缺少一个仅关键字参数:'member'
- r - GLMNET 输出产生平坦的 MAE
- javascript - 汉堡菜单:单击时汉堡图标和 X 图标切换不一致
- pointers - 如何为 LinkedList 内部的 LinkedList 创建不同的头指针?[C]
- java - 如何在 Java 中执行 shell 脚本
- javascript - 错误代码:“MODULE_NOT_FOUND”试图在 Heroku 上部署机器人