django框架中查询数据(与、或关系和其他条件混用)

filters = {"del_flag": 0}
if params.get("start_time", ""):
	filters.update({"create_datetime__gte": params.get("start_time", "")})
if params.get("end_time", ""):
	filters.update({"create_datetime__lte": params.get("end_time", "")})

offset = (int(page) - 1) * int(num)
num = offset + int(num)
try:
	if int(cur_user.id) in [1,2] or cur_user.username in ["admin", "superadmin"]:
		querys = XXXX.objects.filter(**filters).all()[offset:int(num)]
		total = XXXX.objects.filter(**filters).count()
	else:
		sseat = YYYYY(cur_user.id)
		srole = YYYYY2(cur_user.id)
		
		if len(sseat["uid"]) > 0 and len(srole["uid"]) > 0:
			# Q(see_by_seat=1)&Q(user_ids__in=sseat["uid"])
			# Q(see_by_role=1)&Q(user_ids__in=srole["uid"])
			tmp = (Q(Q(see_by_seat=1)&Q(user_ids__in=sseat["uid"]))|Q(Q(see_by_role=1)&Q(user_ids__in=srole["uid"])))
			querys = XXXX.objects.filter(**filters).filter(tmp).all()[offset:int(num)]
			total = XXXX.objects.filter(**filters).filter(tmp).count()
			#print(querys.query)
		elif len(sseat["uid"]) > 0 and len(srole["uid"]) == 0: 
			filters.update({"see_by_seat": 1})
			filters.update({"user_ids__in": sseat["uid"]})
			querys = XXXX.objects.filter(**filters).all()[offset:int(num)]
			total = XXXX.objects.filter(**filters).count()
			#print(querys.query)
		elif len(sseat["uid"]) == 0 and len(srole["uid"]) > 0: 
			filters.update({"see_by_role": 1})
			filters.update({"user_ids__in": srole["uid"]}) 
			querys = XXXX.objects.filter(**filters).all()[offset:int(num)]
			total = XXXX.objects.filter(**filters).count() 
			#print(querys.query)                    
		else:
			filters.update({"user_ids__in": tuple([cur_user.id])})
			querys = XXXX.objects.filter(**filters).all()[offset:int(num)]
			total = XXXX.objects.filter(**filters).count()
			#print(querys.query)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扬子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值