首页 > 解决方案 > 有没有办法检索对象的值而不是它的 ID?

问题描述

使用 django.core.serializers.serialize 时有什么方法可以检索对象而不是 ID (pk)。

我有一个名为 MenuItem 的模型,其 ManyToManyField 与 MenuSubItem 相关。

当我执行这段代码时serializers.serialize('json', MenuItem.objects.all()),我得到了

{'model': 'support.menuitem', 'pk': 2, 'fields': {'type': 2, 'app_label': None, 'label': 'Intranet Administration', 'sub_item': [**3**]}}

但我真正想要的是

{'model': 'support.menuitem', 'pk': 2, 'fields': {'type': 2, 'app_label': None, 'label': 'Intranet Administration', 'sub_item': [**objects or objects_attribute**]}}

或者,如果有使用其他库的解决方法

标签: pythondjangodjango-modelsdjango-serializer

解决方案


可能,在 API 中实际上是一件非常常见的事情,文档中有一篇关于它的文章,看看DRF 序列化器关系,这称为嵌套序列化,当你想要序列化具有另一个可序列化的东西时, DRF 学习起来很有趣,YouTube 上还有 JustDjango 正在解释使用 DRF 的一些基础知识

你的代码应该看起来

class mySerializer(serializers.ModelSerializer):

    Meta:
        model = myModelThatIwantToNest
        fields = ['....']

class myOtherSerializer(serializers.ModeSerializer):
    myModelThatIwantToNest = mySerializer();
    Meta:
        model = myOtherModel
        fields = ['myModelThatIwantToNest', '...']


推荐阅读