Compare commits
No commits in common. "409972ba88ce771edc845d0df4f04c3eb29b4f34" and "d657c9fd266b777651396a272a7a2e744e972d77" have entirely different histories.
409972ba88
...
d657c9fd26
|
|
@ -252,7 +252,6 @@ class ComplexQueryMixin:
|
|||
queryset = self.get_queryset()
|
||||
querys = vdata.get('querys', [])
|
||||
annotate_field_list = vdata.get('annotate_field_list', [])
|
||||
distinct = vdata.get('distinct', True)
|
||||
|
||||
if not querys:
|
||||
new_qs = queryset
|
||||
|
|
@ -276,11 +275,6 @@ class ComplexQueryMixin:
|
|||
except Exception as e:
|
||||
raise ParseError(str(e))
|
||||
|
||||
# 反向关联(右到左)查询容易因 JOIN 膨胀产生重复行,这里按主键回查去重
|
||||
if distinct:
|
||||
pk_name = queryset.model._meta.pk.attname
|
||||
new_qs = queryset.filter(**{f"{pk_name}__in": new_qs.values(pk_name)})
|
||||
|
||||
if annotate_field_list:
|
||||
annotate_dict = getattr(self, "annotate_dict", {})
|
||||
if annotate_dict:
|
||||
|
|
|
|||
|
|
@ -83,7 +83,6 @@ class ComplexSerializer(serializers.Serializer):
|
|||
page = serializers.IntegerField(min_value=0, required=False)
|
||||
page_size = serializers.IntegerField(min_value=1, required=False)
|
||||
ordering = serializers.CharField(required=False)
|
||||
distinct = serializers.BooleanField(required=False, default=True, label="是否按主键去重")
|
||||
querys = serializers.ListField(child=QuerySerializer(
|
||||
many=True), label="查询列表", required=False)
|
||||
annotate_field_list = serializers.ListField(child=serializers.CharField(), label="RawSQL字段列表", required=False)
|
||||
|
|
|
|||
Loading…
Reference in New Issue