我们有一个旧版本的移动应用,如果无法匹配某个字段,则会崩溃。它是API的早期版本 - 所以我只需要将API中的单一用法覆盖到旧版应用程序的安全值。 (我无法更改新应用程序的数据库中的值。)
经过多次研究后,我发现使用脱水并正确设置值。我的控制台中的值正在更改 - 但是,浏览器输出不会获取更改。我有点难过。
这是完整的模型资源。请原谅我的蟒蛇 - 虽然我是一个巨大的粉丝 - 但这不是我正常的踩踏地。
class SectionResource(ModelResource):
articles = fields.ToManyField('app.api.ArticleResource', "articles_sections", null=True, full=True)
class Meta:
queryset = Section.objects.all()
resource_name = "sections"
filtering = {
'id': ['exact'],
}
def dehydrate(self, bundle):
for i in range(len(bundle.data['articles'])):
if bundle.data['articles'][i].obj.template == "Program":
bundle.data['articles'][i].obj.template = "Template"
#print bundle.data['articles'][i].obj.template #updated in print but not browser
return bundle
答案 0 :(得分:0)
您确实打印的是您要分配的相同内容,但文章是否有要序列化的obj属性?
您提出修复的版本:
def dehydrate(self, bundle):
for i in range(len(bundle.data['articles'])):
if bundle.data['articles'][i]["template"] == "Program":
bundle.data['articles'][i]["template"] = "Template"
return bundle
修正了重写版本:
def dehydrate(self, bundle):
for article in filter(lambda a: a.get("template") == "Program", bundle.data.get('articles', [])):
article["template"] = "Template"
return bundle