django - 如何在 Django REST Framework 中合并两个对象的数据
问题描述
所以假设我有这两个模型
轮询:
class Poll(models.Model):
title = models.CharField(max_length=255)
is_active = models.BooleanField(default=True)
is_available = models.BooleanField(default=True)
date_created = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
选项:
class Option(models.Model):
title = models.CharField(max_length=255)
poll = models.ForeignKey(Poll, on_delete=models.CASCADE)
def __str__(self):
return f'{self.poll.title} - {self.title}'
这两个对象用 连接ForeignKey
。现在假设我有一个呈现选项和问题(投票标题)的前端,但我只想对后端进行一次 API 调用。基本上我需要 API 看起来像这样:
{
"title": "Which is the best frontend framework?",
"options":[
{
"id": 1,
"title": "React"
},
{
"id": 2,
"title": "Vue"
},
{
"id": 3,
"title": "Angular"
}
]
}
我应该如何使用什么方法/技术来合并这样的两个对象?
解决方案
基于 DRF文档
class OptionSerializer(serializers.ModelSerializer):
class Meta:
model = Option
fields = ['id', 'title']
class PollSerializer(serializers.ModelSerializer):
options = OptionSerializer(source='option_set', many=True)
class Meta:
model = Poll
fields = ['title', 'options']
推荐阅读
- java - Spring Boot - 身份验证为空
- python - 如何将嵌套字典转换为数据框,而不将内部键转换为列
- java - 比较java中的两个大列表
- python - 用新数据框附加数据框
- javascript - 如何获取数据并存储在 React Context API 中?
- node.js - Socket IO 3.0,不在服务器上接收发射
- javascript - 表单提交上的进度条渲染 | 完成数据响应
- css - 如何修复滚动时通过标题显示的文本?
- node.js - 我可以制作一个仅适用于本地 Firebase 模拟器的云功能吗?
- uitableview - Xamarin.iOS 自定义单元格不显示来自 Interface Builder 的标签