gpt4 book ai didi

Django REST框架GET嵌套序列化器产生错误: 'RelatedManager' object has no attribute 'datafile_set' "

转载 作者:行者123 更新时间:2023-12-02 05:43:27 25 4
gpt4 key购买 nike

我有一个 2 层深的嵌套序列化器堆栈:

class ToolSerialier(serializers.ModelSerializer):
input = ToolInputSerializer()

class Meta:
model = Tool
fields = ('docker_image', 'input')

class ToolInputSerializer(serializers.ModelSerializer):
datafile_set = ToolInputDatafileSerializer(many=True)

class Meta:
model = ToolInput
fields = ('datafile_set', )

class ToolInputDatafileSerializer(serializers.ModelSerializer):
class Meta:
model = ToolInputDatafile
fields = ('name', 'file')

以及各自的型号:

class Tool(models.Model):
docker_image = models.CharField(max_length=255, null=True, blank=True)

class ToolInput(models.Model):
tool = models.ForeignKey(Tool, related_name="input")

class ToolInputDatafile(models.Model):
tool_input = models.ForeignKey(ToolInput, related_name="datafile_set")
name = models.CharField(max_length=255)
file = jsonfield.JSONField()

现在,当我向 ToolSerializers 列表端点发送 GET 请求时,我收到一条错误消息:

/api/tool/处的属性错误

Got AttributeError when attempting to get a value for field `datafile_set` on serializer `ToolInputSerializer`.
The serializer field might be named incorrectly and not match any attribute or key on the `RelatedManager` instance.
Original exception text was: 'RelatedManager' object has no attribute 'datafile_set'.

显然,由于某种原因,ToolInput 的 RelatedManager 上没有调用 get() 方法,并且无法访问 datafile_set 属性。

为什么?我应该引入哪些修复措施?

最佳答案

您缺少一个 many=True 参数:

class ToolSerialier(serializers.ModelSerializer):
input = ToolInputSerializer(many=True)

这是必需的,因为您有反向 FK。

关于Django REST框架GET嵌套序列化器产生错误: 'RelatedManager' object has no attribute 'datafile_set' ",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35916390/

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