如何在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