gpt4 book ai didi

Django REST Framework——多重嵌套序列化可能吗?

转载 作者:行者123 更新时间:2023-12-02 07:17:06 25 4
gpt4 key购买 nike

我想做如下的事情:

模型.py

class Container(models.Model):
size = models.CharField(max_length=20)
shape = models.CharField(max_length=20)

class Item(models.Model):
container = models.ForeignKey(Container)
name = models.CharField(max_length=20)
color = models.CharField(max_length=20)

class ItemSetting(models.Model):
item = models.ForeignKey(Item)
attribute_one = models.CharField(max_length=20)
attribute_two = models.CharField(max_length=20)

序列化器.py

class ItemSettingSerializer(serializers.ModelSerializer):
class Meta:
model = ItemSetting


class ItemSerializer(serializers.ModelSerializer):
settings = ItemSettingSerializer(many=True)

class Meta:
model = Item
fields = ('name', 'color', 'settings')


class ContainerSerializer(serializers.ModelSerializer):
items = ItemSerializer(many=True)

class Meta:
model = Container
fields = ('size', 'shape', 'items')

当我只嵌套一层(容器和项目)时,它对我有用。但是,当我尝试使用 ItemSetting 添加另一个级别的嵌套时,它会抛出 AttributeError 并提示 'Item' 对象没有属性 'settings'

我做错了什么?

最佳答案

多重嵌套序列化对我有用。唯一的主要区别是我为 FK 关系指定了 related_name。所以尝试这样做:

class Item(models.Model):
container = models.ForeignKey(Container, related_name='items')

class ItemSetting(models.Model):
item = models.ForeignKey(Item, related_name='settings')

希望这对您有用。

关于Django REST Framework——多重嵌套序列化可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25252563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com