Reputation: 14190
How do I get Tastypie to fetch a raw sql queryset? queryset = Foo.objects.raw(sql)
does not seem to be working. Is it not possible?
Upvotes: 2
Views: 1524
Reputation: 870
This works to me :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]
Upvotes: 0
Reputation: 14190
This seems to work:
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]
Upvotes: 1
Reputation: 22808
queryset = super(class_name, self).get_query_set()
return queryset.whatever()
Upvotes: 1
Reputation: 3373
You can try to override the dehydrate function to include raw sql syntax and or make a Per-Request Alterations To The Queryset http://django-tastypie.readthedocs.org/en/latest/cookbook.html
I personally would much rather create a custom view function in view.py that matches whatever your api REST syntax is - for example /api/v1/rawsql something like that to keep your patterns the same - you'd just be managing it differently.
Upvotes: 0