1
class DeviceResource(ModelResource):
    class Meta :
        queryset = Device.objects.all()
        resource_name='device'


class UpdateResource(ModelResource):
    device = fields.ForeignKey(DeviceResource, attribute='device',full=True, null=True)

    class Meta : 
        queryset = Update.objects.all()
        resource_name = 'update'
        filtering = {'imei' : ALL } 

更新モデルには「imei」フィールドがあり、ForeignKey を持つデバイスの「imei」にマップされます

私が書くことができるいくつかの属性 to_field があると思いました

        device = fields.ForeignKey(DeviceResource, to_field='imei'attribute='device',full=True, null=True)

でもタスティパイにはそんなものはありません

これが私のデバイスと更新モデルです

http://pastebin.com/ENA64RtM

4

1 に答える 1

1

私はtastypieがこれをうまくサポートしているとは思わないので、モデルを変更して暗黙の主キーを使用できるのであれば、私はそうします。

つまり、属性 arg は、関連するインスタンスにアクセスするために必要な Django モデル属性を参照しているため、まだアクセスしattribute='imei'ていない場合は試してください。

IMEI 経由で DeviceResources を参照する必要があり、それらの .pk がわからない場合は、tastypie ドキュメントを参照して、非 pk ルックアップのヘルプを参照してください。

GET のフィルタリングのみが必要な場合は、これを試してください。

filtering = {
    device: "ALL_WITH_RELATIONS"
}

次に、 UpdateResource フィルター呼び出しは次のようになります

/api/v1/update/?device__imei=asdf123...
于 2013-07-25T20:07:25.097 に答える