Django 使用外键创建Tastype资源,而不将外键公开为资源

Django 使用外键创建Tastype资源,而不将外键公开为资源,django,tastypie,Django,Tastypie,有许多问题看起来与我的问题相似,但似乎没有一个涉及到我的具体表述。抱歉,如果我错过了一个涵盖这一点 我有一个用ForeignKey表示模型的tastypie模型资源。我希望能够创建这种类型的新资源,但我不想将外键的模型公开给api 可以为它添加一个资源,但我不希望站点代码之外的任何东西能够读/写外键。尽管如此,从我迄今为止的尝试来看,如果相应的外键模型也有可以创建的资源,则Tastype似乎只能处理这种类型的外键。我只是希望能够创建引用现有外键对象的模型,而不允许创建新的外键对象 这是可以在ta

有许多问题看起来与我的问题相似,但似乎没有一个涉及到我的具体表述。抱歉,如果我错过了一个涵盖这一点

我有一个用ForeignKey表示模型的tastypie模型资源。我希望能够创建这种类型的新资源,但我不想将外键的模型公开给api

可以为它添加一个资源,但我不希望站点代码之外的任何东西能够读/写外键。尽管如此,从我迄今为止的尝试来看,如果相应的外键模型也有可以创建的资源,则Tastype似乎只能处理这种类型的外键。我只是希望能够创建引用现有外键对象的模型,而不允许创建新的外键对象


这是可以在tastypie中完成的吗?如果是这样,我需要做些什么来实现这一点?如果没有,是否存在某种变通/折衷方法?

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

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

我做了更多的研究,找到了一个可能与您建议的类似的解决方案,但如果这不是正确的方法,我不想将其作为答案提交。在我的资源中,我没有将外键添加为外键,而是将其添加为整数字段,与表示的模型中的外键字段同名。这是一种可以接受的方法,还是我应该覆盖obj_create?这取决于您想要什么。如果您将其添加为整数字段,它将通过api作为整数字段可见,如果您不将其设置为只读,则可以通过api对其进行更改。出于我的目的,如果外键的主键可见,则没有问题,我想要防止的是必须使用与引用它的模型相同的权限将整个外键对象添加到api中。不过我没有考虑只读部分,所以这肯定很有帮助。如果我将其标记为只读,这会阻止通过api创建新资源,还是创建资源时会出现异常?