Django-Rest框架嵌套序列化与中介mod

2024-05-15 10:38:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有三个模型,其中一个是连接其他两个的中介模型。我可以通过外键关系正确地嵌套这两个模型,但是我想使用这个中介模型将它们连接在一起,因为在这种情况下不希望有直接的键关系。底部的期望输出。在

模型.py

class Parent(models.Model):
    first_name = models.CharField(max_length=128)
    last_name = models.CharField(max_length=128)


class Child(models.Model):
    given_name = models.CharField(max_length=128)
    # reverse relation works, but an intermediary model is preferred
    # parent = models.ForeignKey(Parent, related_name="parents" on_delete=models.PROTECT)


class Link(models.Model):
    parent = models.ForeignKey(Parent, on_delete=models.PROTECT)
    child = models.ForeignKey(Child, on_delete=models.PROTECT)

序列化程序.py

^{pr2}$

api_输出.json

{
    "id": 1,
    "first_name": "John",
    "last_name": "Appleseed",
    "children": [
        {
            "id": 1,
            "given_name": "Uno Appleseed"
        },
        {
            "id": 2,
            "given_name": "Dos Appleseed"
        }
    ]
}

Tags: name模型idmodelonmodelsprotectdelete
1条回答
网友
1楼 · 发布于 2024-05-15 10:38:04

尝试在LinkSerializer中使用^{}关键字指定字段源:

class LinkSerializer(serializers.ModelSerializer):
    given_name = serializers.CharField(source='child.given_name')
    id = given_name = serializers.CharField(source='child.id')  

    class Meta:
        model = Link
        fields = ('given_name', 'id')

相关问题 更多 >