私の現在のコードでは、ユーザーは自分が参加した目標のリストを持っています。APIエンドポイントで、ユーザーが参加しているすべての目標を公開したいと思います。このAPIエンドポイントに投稿、配置、およびアクセスできるようにしたいと考えています。参加した目標のリストを取得したり、参加した目標リストに目標を追加したり、参加した目標リストを更新したりします。
# 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エンドポイントを投稿、取得、または配置すると、ユーザーのjoined_goalsではなくUserProfileに影響することです。
編集:結合されたリソースが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の引数を取ると、obj_getは機能しません。