2013-05-17 17 views
3

我可以使用单个TastyPie资源并有条件地返回全部或部分列吗?有条件地显示单个TastyPie资源的全部或部分字段

我有一个员工数据库,我可以通过:/api/v1/employee/获取完整记录。但是这张表中的某些数据会随着时间的推移而变化(例如,某人移动到不同的组,或者他们的职位更改)。

我们希望为历史目的存储某些数据,并能够在将来查询指标 - 例如:“有多少''1级'员工参加了此测试?”。但是如果鲍勃在参加测试后被提升为'2级',他将不再出现在这个查询中,如果我简单地链接到员工模型。

我可以设置我TastyPie资源有条件地返回领域,如(伪代码如下所示)的一个子集:

class EmployeeResource(ModelResource): 
    # bunch of fields 

    class Meta: 
     if t = true: 
      fields = [ ... ] 

...然后通过/api/v1/employee/?t=true访问(或其他一些除了网址)。

或者只是创建一个完全不同的资源,可以引用返回过滤字段集一样有效吗?

回答

1
  1. 您可以创建不同的资源,从EmployeeResource
  2. 呦子类ü可以把里面的数据定制脱水方法:

一个

class EmployeeResource(ModelResource): 
    def dehydrate(self, bundle): 
     t = bundle.request.GET.get('t') 
     if t: 
      bundle.data['custom_field'] = bundle.obj.custom_field 
     return bundle 

    class Meta: 
     fields = common_fields 
0

Meta.fields用于指定返回哪些数据库列,而不是数据记录。这听起来像你正在寻找基于一些条件来过滤掉某些记录(即查询与水平所有人= 1):

* http://django-tastypie.readthedocs.org/en/latest/resources.html#basic-filtering

class EmployeeResource(ModelResource): 
    class Meta: 
     filtering = { 
      "level": ('exact',), 
     } 

然后,只需指定过滤器的查询参数: /API/V1 /员工/?级别= 1

+0

感谢@Henry。我已经更新了我的问题,以便更清楚 - 我真的在寻找从单个资源返回的一组不同的字段/列;或者获得澄清,即创造第二种资源是走向的途径。 –

相关问题