私のプロジェクトAPIで外部キー(この場合は2)を使用してオブジェクトを作成しようとすると、tastypieも関連オブジェクトを作成しようとします(ここでは&に参加してください) :django-tastypie POSTリクエストで関連オブジェクトを作成しよう
class ParticipationResource(ModelResource):
order = fields.ForeignKey(Order, 'order', full=True,)
participant = fields.ForeignKey(UserProfile, 'participant', full=True)
class Meta:
authorization = Authorization()
queryset = Participation.objects.all()
resource_name = 'participation'
fields = ['id', 'order', 'participant', 'products', 'created_at', 'modified_at']
filtering = {
'participant': ALL
}
detail_allowed_methods = ['get', 'post', 'put', 'delete',]
always_return_data = True
データが掲載さ:
{
"order": {
"id":"1",
"resource_uri":"/api/v1/order/1/"
...
},
"participant":{
"id":"1",
"resource_uri":"/api/v1/participant/1/"
...
},
"products":[]
}
エラーメッセージを(NETWORK_IDがユーザープロファイルモデルの外部キーです):
"error_message": "app_user_profile.network_id may not be NULL",
私はPOSTリクエストで完全なオブジェクトを送信していますが、resource_uriのみで試してみましたが、正常に動作しました。問題は、クライアント側のレンダリングに完全なオブジェクトが必要なことです(バックボーンとモデルは自動的にレンダリングされます)。どうすればいいですか? tastypieに関連オブジェクトを作成しないように指示する方法はありますか?
あなたが求めているものはTastypieがフルネストされたオブジェクトを返すようにする方法です、あなたが戻ってPOSTを実行すると、入れ子オブジェクトの完全なJSONではなく、BackboneだけがPOSTをresource_uriにしますか? Backbone-TastypieまたはBackbone-Relationalを使用して、バックボーン側のネストされたオブジェクトを処理していますか?それともカスタムparse()関数がありますか? –
私は、バックボーン側で自動的にネストされたオブジェクトをレンダリングするために完全なオブジェクトのみを使いたいと思っていますが、Tastypieは関連するオブジェクトを扱うことができず、resource_uriを与えないと新しいオブジェクトを作成できませんオブジェクト)。私は、Backbone-Tastypieとカスタムのparse()関数を使用します。 – djevg
ForeignKey –