1

我遇到了美味派的问题,我只是找不到导致它的原因。没有答案的类似问题:Tastypie foreign key relationship throwing error

资源:

class VoteResource(ModelResource):
    choice = fields.ToOneField(ChoiceResource, 'choice', full=True)
    user = fields.ToOneField(UserResource, 'user')

    class Meta:
        queryset = Vote.objects.all()
        resource_name = 'vote'
        '''...'''
        always_return_data = True
        filtering = {
            'id': ALL,
            'user': ALL_WITH_RELATIONS,
            'choice': ALL_WITH_RELATIONS
        }

    def hydrate(self, bundle):    
        bundle.obj.user = bundle.request.user
        return bundle

用于创建对象的请求负载:

{
  "choice": "/api/v1/choice/210/"
}

(用户通过水合物自动添加)。异常是在 ressources.py 里面抛出的full_hydrate。根据 django 控制台,我的对象正在正确加载。

导致这个的美味派里面的线是

setattr(bundle.obj, field_object.attribute, value.obj) # value obj is the evil one

美味的源代码在这里

让我丧命的是,它就像 2 天前一样工作。我添加了 1 个其他资源,而没有触及选择、用户或与模型相关的任何其他资源。我检查了最近的提交历史,并且资源没有受到影响。

4

1 回答 1

1

通过美味的源代码调试我的方式并解决了我的问题。

看起来美味派首先在相关对象上调用脱水。由于误解,我在choice's dehydrate 中返回了捆绑包的数据,而不是实际捆绑包本身。

当 sweetpie 脱水choice时,它显然没有得到一个 bundle 对象,因此没有obj

于 2013-10-02T10:41:13.137 回答