我有一個基本的Django模型,如:Django的Tastypie先進的過濾:如何做複雜的查找符合Q對象
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沒有運氣:
,並在課堂上爲元我tastypie已濾波設置爲:
filtering = {
'name: ALL,
'description': ALL,
'email': ALL,
'query': ['icontains',],
}
任何想法我怎麼能解決呢?
感謝 - 牛頓
這工作正常。謝謝 – nknganda 2012-04-15 20:53:34
詞典有沒有方法'擴展'。應該是: orm_filters.update({'custom':qset}) – 2012-12-05 22:06:16
此解決方案會導致調用數據庫兩次(對於semi_filtered,然後對於自定義過濾器)。稍微不同的代碼適用於我:如果'custom'在applicable_filters:custom = applicable_filters.pop('custom')中返回Outreaches.objects.filter(custom)else:return super(OutreachResource,self).apply_filters(request,applicable_filters) – 2013-09-23 22:16:54