私の現在のコードでは、ユーザーは彼が参加した目標のリストを持っています。私はAPIのエンドポイントにユーザーの結合されたすべての目標を公開したい。私は、このAPIエンドポイントに投稿、配置、取得できるようにしたいと考えています。結合された目標のリストを取得したり、結合された目標リストに目標を追加したり、結合された目標リストを更新したりします。manytomanyフィールドをtastypieのリソースとして公開するにはどうすればよいですか?
# Joined Goal Resource
class JoinedGoalResource(ModelResource):
user = fields.ForeignKey(UserResource, 'user')
joined_goals = fields.ManyToManyField(GoalResource, 'joined_goals', full=True)
class Meta:
authentication = Authentication()
authorization = Authorization()
queryset = UserProfile.objects.all()
resource_name = 'joined_goal'
allowed_methods = ['get', 'post', 'put']
filtering = {
'user': ALL_WITH_RELATIONS
}
上記のコードの問題は、私はポストをすれば、得るので、それはそのクエリセットとしてのUserProfileモデルを使用して、またはAPIエンドポイントに置く、それはのUserProfileのではなく、ユーザーのjoined_goalsに影響を与えるということです。
編集: 結合されたリソースがobj_createメソッドをオーバーライドし、ログインしたユーザーの結合済みゴールリストに追加するようにコードを変更しました。問題は、このメソッドでバンドルを返す必要があることです。返すバンドルを作成するにはどうすればよいですか?
goal_resource = GoalResource
goal_obj = goal_resource.obj_get(pk=1)
goal_bundle = goal_resource.build_bundle(obj=goal_obj, request=request)
return goal_bundle
をしかし、PK = 1
このような質問がますます増えているので、「トリシアーな部分」についての解決策を見ていただければ幸いです(http://stackoverflow.com/questions/8613522/how-to-put-product- to-cart-via-tasytpie-api)[Q2] Q1は私の登録理由でした(http://stackoverflow.com/questions/10111734/tastypie-add-element-to-a-many-to-many-relationship) on stackoverflow :) – seb
誰かが良い質問を投稿する必要があります。この質問は、オブジェクトを公開する方法とオブジェクトを操作する方法に関するもので、私はそれに答えたと思います。また、あなたが言及している部分をどのように実装するかについてのガイドラインも示しました。難しいことではなく、ModelResourceがどのように機能し、どのようなものを呼び出すのかを見るにはちょっとした努力が必要です。質問があれば、質問して、試したことを伝えてください。助けて。しかし、SOは "私のためのコードを書く"ことを意図していません。 – kgr
そして、私は3ヶ月前にQ1のすべての点をフルフィルしたと思います。 – seb