django-rest-framework:如何更新嵌套的外键?我的更新方法甚至没有被调用
Posted
技术标签:
【中文标题】django-rest-framework:如何更新嵌套的外键?我的更新方法甚至没有被调用【英文标题】:django-rest-framework: how do I update a nested foreign key? My update method is not even called 【发布时间】:2022-01-22 02:43:18 【问题描述】:我有这样的东西(我只包括了相关部分):
class ImageSerializer(serializers.ModelSerializer):
telescopes = TelescopeSerializer(many=True)
def update(self, instance, validated_data):
# In this method I would perform the update of the telescopes if needed.
# The following line is not executed.
return super().update(instance, validated_data)
class Meta:
model = Image
fields = ('title', 'telescopes',)
当我执行GET
时,我会得到我想要的嵌套数据,例如:
'title': 'Some image',
'telescopes': [
'id': 1,
'name': 'Foo'
]
现在,如果我想通过更改名称而不是望远镜来更新此图像,我会PUT
如下:
'title': 'A new title',
'telescopes': [
'id': 1,
'name': 'Foo'
]
似乎django-rest-framework
甚至没有调用我的update
方法,因为模型验证失败(Telescope.name
有一个unique
约束),而django-rest-framework
正在验证它,就好像它想创建它一样?
当我不使用嵌套序列化程序时,一切正常,而只是使用 PrimaryKeyRelatedField
,但出于性能原因(以避免过多的 API 调用),我确实需要嵌套序列化程序。
有人知道我错过了什么吗?
谢谢!
【问题讨论】:
【参考方案1】:您将在此处找到您的解决方案 Django rest relations
【讨论】:
以上是关于django-rest-framework:如何更新嵌套的外键?我的更新方法甚至没有被调用的主要内容,如果未能解决你的问题,请参考以下文章
如何在 django-rest-framework 中为 API 使用 TokenAuthentication
django-rest-framework - 在可浏览的 API 中自动生成表单?
如何使用 django-rest-framework 进行社交登录? [关闭]
如何在 django-rest-framework 中对权限进行单元测试?