如何在Tastypie中实现原始sql查询
我试图做这个简单的查询,但它不起作用。谢谢如何在Tastypie中实现原始sql查询,tastypie,Tastypie,我试图做这个简单的查询,但它不起作用。谢谢 SELECT * FROM TSimple where (start_date < '2012-04-20' and end_date is null) or (end_date > '2012-04-20' and start_date < '2012-04-20') class TSimple (models.Model): start_date = models.DateTimeField() end_date
SELECT * FROM TSimple where (start_date < '2012-04-20' and end_date is null) or
(end_date > '2012-04-20' and start_date < '2012-04-20')
class TSimple (models.Model):
start_date = models.DateTimeField()
end_date = models.DateTimeField(blank=True, null=True)
...
class TSimpleResource(ModelResource):
def dehydrate(self, bundle):
request_method = bundle.request.META['REQUEST_METHOD']
if request_method=='GET':
new_date = bundle.request.GET.get('new_date', '')
qs = TSimple.objects.raw(
'SELECT * FROM TSimple where (start_date<=\'' +
new_date + '\' and end_date>=\'' +
new_date + '\') or (start_date<=\'' + new_date +
'\' and end_date is null)')
ret_list = [row for row in qs]
// NOT WORK. Not able to get correct json data in javascript.
// It needs return bundle. HOW to replace bundle?
// Is this correct way to do it?
return ret_list
else:
// This is ok.
return bundle
从t简单位置选择*(开始日期<'2012-04-20',结束日期为空)或
(结束日期>'2012-04-20'和开始日期>'2012-04-20')
类t简单(models.Model):
开始日期=models.DateTimeField()
end_date=models.DateTimeField(空白=True,空=True)
...
类TSimpleResource(模型资源):
def脱水剂(自身、捆绑):
request\u method=bundle.request.META['request\u method']
如果请求_方法=='GET':
new_date=bundle.request.GET.GET('new_date','')
qs=TSimple.objects.raw(
'从TSimple where(开始日期=\)选择*+
new\u date+'\')或(start\u date我找到了过滤器,它似乎工作了。但我仍然对原始sql感兴趣
def apply_filters(self, request, applicable_filters):
base_filter = super(TSimpleResource, self).apply_filters(request,
applicable_filters)
new_date = request.GET.get('new_date', None)
if new_date:
qset = (
(
Q(start_date__lte=new_date) &
Q(end_date__gte=new_date)
) |
(
Q(start_date__lte=new_date) &
Q(end_date__isnull=True)
)
)
base_filter = base_filter.filter(qset)
return base_filter