使用外键创建tastypie资源,而不将外键作为资源公开

时间:2013-03-13 15:49:14

标签: django tastypie

有许多问题看起来与我的相似,但似乎没有一个问题涵盖我的特定表述。如果我错过了一个涵盖这一点的道歉,请道歉。

我有一个tastypie ModelResource,它代表一个带有ForeignKey的模型。我希望能够创建该类型的新资源,但我不想将外键的模型暴露给api。

为它添加资源会很好,但我不希望站点代码外部的任何内容能够读/写外键。根据我迄今为止所尝试的内容,如果相应的外键模型也具有可以创建的资源,则tastypie似乎只能处理这种类型的外键。我只是希望能够创建引用现有外键对象的模型,而不允许创建新的外键对象。

这可以在tastypie中完成吗?如果是这样,我需要做什么才能实现这一目标?如果没有,是否有某种解决方法/妥协?

1 个答案:

答案 0 :(得分:3)

如果您不希望外键在api上可见,请不要在资源中为其创建字段。 如果需要在create / update上为其指定一些值,则可以覆盖此资源的obj_create / obj_update tastypie方法。例如:

def obj_create(self, bundle, request=None, **kwargs):
    obj = super(YourResource, self).obj_create(bundle, request, **kwargs)
    obj.yourforeighnkey = somevalue
    obj.save()
    return obj