fix: FluentQuery.filter 污染 base_qs 导致积分处罚列表为空
This commit is contained in:
@@ -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
|
||||
|
||||
# ---- 获取记录 ----
|
||||
|
||||
|
||||
Reference in New Issue
Block a user