python如何使用django_python – Django:如何在Q()语句中使用字符串作为关键字?

我正在为某个模型编写一个简单的搜索表单.让我们称之为Orchard模型,并为它提供苹果,橙子和梨的属性,仅仅是为了演示.

因此,表单不需要填写所有字段.所以你可以搜索苹果和橘子而不是梨.我需要像这样过滤:

Orchard.objects.filter(apples=request.GET.get('apples'), oranges=request.GET.get('oranges'), pears=request.GET.get('pears'))

但如果梨是空的,就不会有任何结果.

我的第一个想法是使用Q对象,如下所示:

from django.db.models import Q

options = {}

options['apples'] = request.GET.get('apples')

options['oranges'] = request.GET.get('oranges')

options['pears'] = request.GET.get('pears')

queries = None

for key in options:

if options[key] != u'':

if queries:

queries &= Q(key=options[key]) # <=== problem here

else:

queries = Q(key=options[key]) # <=== same problem here

results = Orchard.objects.filter(queries)

问题出现在那些标记的行中.我显然不能只使用“key”作为属性关键字,因为它不需要字符串,它基本上需要一个变量.

那么……我该如何解决这个问题呢?

除非有一个已知的解决方案,这个问题不涉及Q.这也会有所帮助.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值