fix: FluentQuery.filter 污染 base_qs 导致积分处罚列表为空

This commit is contained in:
XingQue
2026-06-25 16:28:45 +08:00
parent 8ee7814a45
commit a69c008f96
2 changed files with 15 additions and 13 deletions

View File

@@ -453,31 +453,33 @@ class FluentQuery(Generic[_M]):
# ---- 过滤 ----
def filter(self, *args: Any, **kwargs: Any) -> FluentQuery[_M]:
"""过滤查询,支持 Q 对象和关键字参数返回 self 以支持链式调用"""
"""过滤查询,支持 Q 对象和关键字参数返回新 FluentQuery不修改原查询"""
converted_args: List[Any] = []
for arg in args:
if isinstance(arg, Q) and self._joined_models:
converted_args.append(self._remap_q(arg))
else:
converted_args.append(arg)
self._qs = self._qs.filter(*converted_args, **kwargs)
return self
q = self._clone()
q._qs = self._qs.filter(*converted_args, **kwargs)
return q
def exclude(self, *args: Any, **kwargs: Any) -> FluentQuery[_M]:
"""排除查询返回 self 以支持链式调用"""
"""排除查询返回新 FluentQuery不修改原查询"""
converted_args: List[Any] = []
for arg in args:
if isinstance(arg, Q) and self._joined_models:
converted_args.append(self._remap_q(arg))
else:
converted_args.append(arg)
self._qs = self._qs.exclude(*converted_args, **kwargs)
return self
q = self._clone()
q._qs = self._qs.exclude(*converted_args, **kwargs)
return q
# ---- 排序 ----
def order_by(self, *args: Any) -> FluentQuery[_M]:
"""排序,支持字符串和 FieldExpression返回 self 以支持链式调用"""
"""排序,支持字符串和 FieldExpression返回新 FluentQuery不修改原查询"""
converted: List[str] = []
for a in args:
if isinstance(a, str):
@@ -486,8 +488,9 @@ class FluentQuery(Generic[_M]):
converted.append(str(a))
else:
converted.append(str(a))
self._qs = self._qs.order_by(*converted)
return self
q = self._clone()
q._qs = q._qs.order_by(*converted)
return q
# ---- 获取记录 ----