Tastypie |当Django ForeignKey使用'to_field'而不是主键时的相关资源

时间:2013-07-25 19:01:57

标签: django tastypie

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',它映射到' imei'在具有ForeignKey的设备中

我以为会有一些属性to_field,我可以写

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

但在tastypie中没有这样的东西

以下是我的设备和更新模型

http://pastebin.com/ENA64RtM

1 个答案:

答案 0 :(得分:1)

我认为tastypie不支持这个,所以如果你可以改变模型使用隐式主键,我会这样做。

也就是说,属性arg引用了访问相关实例所需的Django模型属性,因此如果您还没有,请尝试attribute='imei'

如果您需要通过IMEI引用DeviceResources并且不知道他们的.pk,请参阅tastypie docs以获取有关非pk查找的更多帮助。

如果您只是需要过滤GET,请尝试以下方法:

filtering = {
    device: "ALL_WITH_RELATIONS"
}

然后你的UpdateResource过滤器调用类似于

/api/v1/update/?device__imei=asdf123...