首页 > 解决方案 > 如何在 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"
                }
            ]
}

我应该如何使用什么方法/技术来合并这样的两个对象?

标签: djangodjango-rest-framework

解决方案


基于 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']

推荐阅读