【问题标题】:Tastypie get latest recordTastypie 获得最新记录
【发布时间】:2013-05-21 12:44:18
【问题描述】:

而不是在未设置 ID 时返回多个对象。我希望它只返回一个,最新的。

# return latest entry
/api/entry/
{'id': 2, 'foo': 'bar', ...}

# return specified entry
/api/entry/1/
{'id': 1, 'foo': 'bar', ...}

我尝试过同时覆盖 obj_get_list 和 get_object_list,但对我来说都不起作用。

我需要为此创建一个视图吗?

【问题讨论】:

    标签: tastypie


    【解决方案1】:

    我不知道您是如何尝试覆盖 obj_get_list 的,但基本上您要做的就是在您的 Resource 中定义它,如下所示:

    def get_object_list(self, request):
        return super(self, Resource).get_object_list(request)[:1]
    

    如果您没有在日期字段上设置默认排序,您也可以附加latest('somedate')。

    【讨论】:

    • 这就是我所做的,我得到了'User' object has no attribute 'filter'。我认为这是因为get_object_list 需要返回一个查询集列表。切片或使用latest 只会产生一个。
    • 啊对,就是因为这里:github.com/toastdriven/django-tastypie/blob/master/tastypie/… 好的,所以你需要在稍后阶段对结果进行切片。您可以在资源元中定义分页器限制(并将其设置为 1)或覆盖 get_list 方法。
    【解决方案2】:

    使用 aniav 的解决方案,并添加必要的修改:

    Resource
        class Meta:
             max_limit=1
        get_object_list(self,request):
            return super(self, Resource).get_object_list(request).filter(user=request.user).order_by('-date')
    

    当然日期可以替换为您想要最新的字段。

    【讨论】:

      猜你喜欢
      • 2020-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-12
      • 2018-10-17
      • 2012-04-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多