gpt4 book ai didi

python - 使用 TastyPie 将 ForeignKey 字段更新为 null

转载 作者:太空狗 更新时间:2023-10-29 22:20:00 28 4
gpt4 key购买 nike

是否可以使用 TastyPie 将 ForeignKey 字段更新为 None

相关问题:tastypie won't remove foreignkey reference during PUT

我有什么:

class SomeObject(models.Model):
some_field = models.ForeignKey(SomeOtherObject, null=True)

(当然还有相应的 TastyPie 资源类,可以很好地更新其他字段)

我想要的:

使用 TastyPie 将 some_field 更新为 None

我尝试过的(在 JavaScript 中):

$.put('/my/api/model/someobject/42/', { some_field: null });
$.put('/my/api/model/someobject/42/', { some_field: '/my/api/model/someotherobject/null/' });
$.put('/my/api/model/someobject/42/', { some_field: '' });
$.put('/my/api/model/someobject/42/', { some_field: 0 });
$.put('/my/api/model/someobject/42/', { some_field: false });

等等。这些都是404或者400,有的是204,但是数据库没有更新。

通读了full_dehydrate()中的代码,目前看来是不可能的。

我看过最近的代码on github ,我不相信这是可能的。

最佳答案

这是一个通用的解决方案。创建基础资源并从该资源扩展所有其他资源。这是一个 hack,但它有效。

class MyResource(ModelResource):
def obj_update(self, bundle, request=None, **kwargs):
for field_name in self.fields:
field = self.fields[field_name]

if type(field) is ToOneField and field.null and bundle.data[field_name] is None:
setattr(bundle.obj, field_name, None)

return super(MyResource, self).obj_update(bundle, **kwargs)

关于python - 使用 TastyPie 将 ForeignKey 字段更新为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9695798/

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