当请求对象列表时,我怎么能省略一些tastypie模型资源字段

时间:2013-08-06 10:46:04

标签: tastypie

我是django,python和tastypie的新手。我创建一个API,其中我有很多资源,每个资源都有一些其他相关的资源。我想在我调用特定资源时获取相关对象。为此在tastypie模型资源中,我已使用_set和lambda函数使用ToOneField和ToManyField连接所有资源。但现在的问题是,如果我调用顶级父资源列表,它将获取完整数据库并将其作为响应返回。例如,我有一个主题资源,一个问题资源和一个回答源,其中问题与主题相关,答案与问题有关。如果我请求可用的主题实例,它将返回所有主题,与每个主题相关的所有问题以及与每个问题相关的所有答案。我想做什么,如果我发送单个资源或详细视图的请求,那么它应该返回相关的对象。对于list方法,它应该只返回该特定modelresource的对象....

告诉我eguys我该怎么做

1 个答案:

答案 0 :(得分:2)

您可以使用Api字段的use_in参数完成您想要的操作。它看起来像是:

related_fiedl1 = ToOneField(..., use_in='detail')
related_fiedl2 = ToManyField(..., use_in='detail')

您可以通过传递可调用的方式在更复杂的场景中使用它(例如,如果请求中存在参数,则显示一个字段)。

另一件事并不完全是你要求的,但可能更一致,是使用full_listfull_detail参数,因此关系字段将在列表中显示资源网址,并且完整的资源表示细节。