我有Orders
模型,用于存储用户订单。我想过滤用户在过去24小时内仅发出的订单(order_started
字段)。我正在尝试更新以下视图:
def userorders(request):
Orders = Orders.objects.using('db1').filter(order_owner=request.user).extra(select={'order_ended_is_null': 'order_ended IS NULL',},)
订单模型包含以下字段:
order_uid = models.TextField(primary_key=True)
order_owner = models.TextField()
order_started = models.DateTimeField()
order_ended = models.DateTimeField(blank=True, null=True)
如何添加额外的过滤器?
答案 0 :(得分:4)
您可以按照以下方式执行此操作,在filter
调用中添加另一个参数(假设您的其余功能正常工作):
import datetime
def userorders(request):
time_24_hours_ago = datetime.datetime.now() - datetime.timedelta(days=1)
orders = Orders.objects.using('db1').filter(
order_owner=request.user,
order_started__gte=time_24_hours_ago
).extra(select={'order_ended_is_null': 'order_ended IS NULL',},)
请注意,Orders
不是变量名称的好选择,因为它引用项目中的另一个类并以caps(通常用于类)开头,因此我使用了orders
相反(不同的情况)。