python - 有没有办法检索对象的值而不是它的 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**]}}
或者,如果有使用其他库的解决方法
解决方案
可能,在 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', '...']
推荐阅读
- javascript - 画布中的 Progresswheel 类型的东西不会以所需的百分比停止。开始未定义的价值
- java - 在 Spring Boot 和 Activiti 中创建名为“processEngine”的 bean 时出错
- laravel - Heroku“指定的超时已过期”在具有基本身份验证的laravel应用程序中
- c# - 将美国日期转换为英国日期格式 C#
- ios - 如何使下载按钮在 WKWebView 中工作
- java - 在java中的循环中将char转换为字符串,然后将其设置为JtextField
- wordpress - React/WordPress PWA 在离线时不响应 200
- java - @CreationTimestamp 和 @UpdateTimestamp 不适用于 LocalDateTime
- html - 弹性项目不进入下一行(不换行)
- delphi - Delphi自动补全变量的方法