python – 使用TastyPie将ForeignKey字段更新为null
发布时间:2020-12-16 23:34:27 所属栏目:Python 来源:网络整理
导读:是否可以使用TastyPie将ForeignKey字段更新为None? 相关问题:tastypie won’t remove foreignkey reference during PUT 是)我有的: class SomeObject(models.Model): some_field = models.ForeignKey(SomeOtherObject,null=True) (当然还有相应的TastyPie
是否可以使用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,我不相信这是可能的. 解决方法
这是一个通用的解决方案.创建基础资源并从此扩展所有其他资源.这是一个黑客,但它的工作原理.
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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |