在我当前的代码中,用户有一个他加入的目标列表。我想要一个 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 端点上发布、获取或放入,它将影响 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 的参数时,obj_get 不起作用