我可以使用单个TastyPie资源并有条件地返回所有列或子列吗?
我有一个员工数据库,我可以通过/api/v1/employee/
获取完整记录。但是,此表中的某些数据可能会随着时间的推移而发生变化(例如,有人移动到其他组或其职位名称发生变化)。
我们希望存储某些数据用于历史目的,并且能够在将来查询指标 - 例如:“有多少'1级'员工参加了此测试?”。但是,如果Bob在参加测试后被提升为“2级”,那么如果我只是链接到员工模型,他将不再出现在此查询中。
我是否可以设置我的TastyPie资源以有条件地返回字段子集,例如(伪代码跟随):
class EmployeeResource(ModelResource):
# bunch of fields
class Meta:
if t = true:
fields = [ ... ]
...然后通过/api/v1/employee/?t=true
(或对网址的其他一些补充)进行访问。
或者只是创建一个完全不同的资源同样有效,可以引用它来返回过滤的字段集?
答案 0 :(得分:1)
一
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
答案 1 :(得分: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