相关疑难解决方法(0)

Django Tastypie高级过滤:如何使用Q对象进行复杂查找

我有一个基本的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)
Run Code Online (Sandbox Code Playgroud)

我需要在上面的模型上执行一个复杂的查询,如:

qset = (
    Q(name__icontains=query) |
    Q(description__icontains=query) |
    Q(email__icontains=query)
    )
results = Business.objects.filter(qset).distinct()
Run Code Online (Sandbox Code Playgroud)

我尝试了以下使用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
Run Code Online (Sandbox Code Playgroud)

在课程Meta for tastypie我有过滤设置为:

filtering = { …
Run Code Online (Sandbox Code Playgroud)

python django tastypie django-q

28
推荐指数
1
解决办法
1万
查看次数

Tastypie Negation Filter

默认情况下是否有可用的否定过滤器.想法是你可以在django ORM中执行以下操作:

model.objects.filter(field!=value)
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我怎么能在tastypie中做到这一点.我试过了:

someapi.com/resource/pk/?field__not=value
someapi.com/resource/pk/?field__!=value
someapi.com/resource/pk/?field!=value
Run Code Online (Sandbox Code Playgroud)

而且他们都给了我错误.

api django tastypie

19
推荐指数
2
解决办法
6180
查看次数

使用多个值进行Tastypie过滤

我有一个关于过滤tastypie的简单问题.

我想过滤多个值.例如:

/api/v1/message/?accountId=1,5,12

这不起作用.知道我怎么能这样做吗?

我需要使用高级过滤吗?如果是,我该如何创建这样的过滤器?一个简单的puesdo代码的简单例子将是伟大的!

谢谢!

api django rest tastypie

15
推荐指数
3
解决办法
9515
查看次数

标签 统计

django ×3

tastypie ×3

api ×2

django-q ×1

python ×1

rest ×1