我有两列,
对于单个量值amount
和量程量值amount_min
和amount_max
amount_max0 300000
您可以使用Q对象将条件与OR操作符(|)组合。
试一试:
from django.db.models import Q
import datetime
Jobs.objects.filter(
created_on__gte=datetime.datetime.now() - datetime.timedelta(days=30),
Q(amount_min=0, amount_max=0) |
Q(amount_min__gte=100000, amount_min__lte=100000, amount_max__gte=300000, amount_max__lte=300000) |
Q(amount__range=(100000, 300000))
)
我想你遇到问题了Q因为它不喜欢和普通的命名参数
组合在一起命名参数示例:created_on__gte = datetime.datetime.now() - datetime.timedelta(days=30)
我个人的做法是overwrapQ语句和非常慎重,例如:
Jobs.objects.filter(
Q(created_on__gte = datetime.datetime.now() - datetime.timedelta(days=30))
& Q(
Q(
Q(amount_min__gte = 100000)
& Q(amount_min__lte = 100000)
& Q(amount_max__gte = 300000)
& Q(amount_max__lte = 300000)
)
| Q(amount__range=(100000, 300000))
)
)
过度?——可能。