次のようなtastypieリソースがあります
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 シェルでパスワードをリセットするまで、ユーザーでログインできません)。
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 のオプションを使用してこれを行う簡単な方法が必要であると私は考えています。