1

Tastypie に問題があり、原因がわかりません。回答のない同様の質問: Tastypie 外部キー関係のスロー エラー

リソース:

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 コンソールによると、私のオブジェクトは正しくロードされています。

これを引き起こしているtastypie内の行は

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

Tastypie のソースコードはこちら

私を殺しているのは、2日前のように機能したことです。選択肢、ユーザー、またはモデルに関連する他のリソースに触れずに、他のリソースを 1 つ追加しました。最近のコミット履歴を確認しましたが、リソースは変更されていません。

4

1 に答える 1

1

Tastypie ソースをデバッグして、問題を解決しました。

Tastypie が最初に関連オブジェクトで dehydrate を呼び出しているようです。誤解のためchoice、実際のバンドル自体ではなく、バンドルのデータを の脱水で返しました。

Tastypie が dehydrate するときchoice、明らかに bundle オブジェクトを取得しないため、 はありませんobj

于 2013-10-02T10:41:13.137 に答える