Tastypie&原始sql

时间:2013-02-10 01:44:05

标签: django tastypie

如何让Tastypie获取原始SQL查询集? queryset = Foo.objects.raw(sql)似乎不起作用。这不可能吗?

4 个答案:

答案 0 :(得分:1)

queryset = super(class_name, self).get_query_set()
return queryset.whatever()

答案 1 :(得分:1)

这似乎有效:

class BarResource(ModelResource):

    class Meta:
        queryset = Bar.objects.all()

    def dehydrate(self, bundle):
        qs = Bar.objects.raw('SELECT * FROM foo_bar')
        return [row for row in qs]

答案 2 :(得分:0)

您可以尝试覆盖脱水功能以包含原始sql语法,或者对查询集进行逐个请求更改http://django-tastypie.readthedocs.org/en/latest/cookbook.html

我个人更愿意在view.py中创建一个自定义视图函数,它匹配你的api REST语法 - 例如/ api / v1 / rawsql之类的东西,以保持你的模式相同 - 你只是在管理它有所不同。

答案 3 :(得分:0)

这对我有用:D

class UsersResource(ModelResource):
    class Meta:
        resource_name   = "users"
        queryset        = User.objects.all()
        allowed_methods = ['get']

   def obj_get_list(self, bundle, **kwargs):
        query = """
        SELECT 
            id, name
        FROM 
            users 
        ORDER BY name"""         
        qs = User.objects.raw(query)
        return [row for row in qs]