【发布时间】:2012-04-18 18:55:28
【问题描述】:
我有一个基本的 Django 模型,例如:
class Business(models.Model):
name = models.CharField(max_length=200, unique=True)
email = models.EmailField()
phone = models.CharField(max_length=40, blank=True, null=True)
description = models.TextField(max_length=500)
我需要对上述模型执行一个复杂的查询,例如:
qset = (
Q(name__icontains=query) |
Q(description__icontains=query) |
Q(email__icontains=query)
)
results = Business.objects.filter(qset).distinct()
我使用 tastypie 尝试了以下操作,但没有成功:
def build_filters(self, filters=None):
if filters is None:
filters = {}
orm_filters = super(BusinessResource, self).build_filters(filters)
if('query' in filters):
query = filters['query']
print query
qset = (
Q(name__icontains=query) |
Q(description__icontains=query) |
Q(email__icontains=query)
)
results = Business.objects.filter(qset).distinct()
orm_filters = {'query__icontains': results}
return orm_filters
在美味派的 Meta 类中,我将过滤设置为:
filtering = {
'name: ALL,
'description': ALL,
'email': ALL,
'query': ['icontains',],
}
有什么想法可以解决这个问题吗?
谢谢 - 牛顿
【问题讨论】:
标签: python django tastypie django-q