我有一个美味的资源,比如
class MembershipResource(ModelResource):
user = fields.ForeignKey(UserResource, 'user')
activity = fields.ForeignKey(ActivityResource, 'activity')
class Meta:
authorization=Authorization()
authentication=ApiKeyAuthentication()
现在,当我使用数据向此资源发布帖子时,这很有效
{
user: "/api/v1/user/username/",
activity: "/api/v1/activity/2/"
}
但是,如果我使用用户名、id 等传递完整的用户数据,TastyPie 会更新 auth_user 并更改身份验证详细信息(我无法使用用户登录,直到我在 django shell 中重置密码)
有没有一种简单的方法来制作fields.ForeignKey(ForeignResource)来防止更新ForeignResource?
编辑:
我可以通过使用特定领域的水合物来做到这一点。例如:
def hydrate_user(self, bundle):
user = UserNameResource()
userbundle = user.build_bundle(data=bundle.data['user'], request=bundle.request)
userobj = user.full_hydrate(userbundle).obj
bundle.data['user'] = userobj
return bundle
甚至可以使用名为 user_id 的伪字段。但是,我认为这是一个非常普遍的问题,必须有一种更简单的方法来通过 field.ForeignKey 中的一个选项来做到这一点。