django - Django嵌套序列化在读取时不序列化
问题描述
我知道这个问题很受欢迎,但无法弄清楚。
class SpaceTypeSerializer(serializers.ModelSerializer):
class Meta:
model = SpaceType
fields = ['id', 'company_id', 'label', 'value', 'active']
class SpaceSerializer(serializers.ModelSerializer):
class Meta:
model = Space
# space_type = serializers.PrimaryKeyRelatedField(
# queryset=SpaceType.objects.all())
space_type = SpaceTypeSerializer(read_only=True)
fields = ['id', 'location_id', 'name', 'description',
'active', 'space_type', 'group_reservations_active', 'seats']
我得到的只是该space_type
领域的 id。我尝试了注释掉的部分并得到了完全相同的结果。
class Space(Model):
location = ForeignKey(
Location,
on_delete=DO_NOTHING,
blank=False,
null=False,
related_name='spaces'
)
name = CharField(max_length=255)
description = TextField(null=True)
active = BooleanField(default=True)
space_type = ForeignKey(
SpaceType,
on_delete=DO_NOTHING,
blank=True,
null=True,
related_name='spaces'
)
这是我的模型。不知道还能尝试什么,但我希望我space_type
将整个空间类型对象序列化。
这是我的查询:
def get(self, request, pk, format=None):
space = Space.objects.select_related('space_type').get(pk=pk)
serializer = SpaceSerializer(space)
return Response(serializer.data)
不确定我是否需要select_related
将其放入其中以进行验证。
解决方案
Idk 你把嵌套的序列化器放在哪里Meta
,但显然不是这样,这是一个工作版本
class SpaceSerializer(serializers.ModelSerializer):
space_type = SpaceTypeSerializer(read_only=True)
class Meta:
model = Space
fields = ['id', 'location_id', 'name', 'description',
'active', 'space_type', 'group_reservations_active', 'seats']
推荐阅读
- python - 如何使用不同版本的 Python 运行 Jupyter Notebook?
- java - 使用 Floyd 算法在字符串矩阵中显示最短路径
- angular - Angular rxjs 过滤器可观察
- bootstrap-4 - 可滚动的引导列
- php - 使用数组循环遍历集合 - Laravel
- php - 无法使用 PHP 上传照片
- flutter - Flutter:显示来自 RestAPI 的数据
- android - 使用 dagger2 在多个片段中使用相同的视图模型实例
- c++ - 我可以使用宏自动构建参数列表吗?
- c# - 在 c# 中使用 microsoft.office.tools.word 我们如何将单个页面保存为 rtf 文件