我尝试为ModelList视图执行get_queryset,但我只想选择前面没有其他记录具有相同event_id的那些记录。例如,我们有两个记录,第二个记录是第一个记录的子记录,因此,我不想从数据库中选择第二条记录,因为它已经在第一条记录的子字段中。子字段是在序列化程序中生成的,数据库中不存在。
数据集
[
{
"event_id": "63395",
"operation_id": "25180328",
"time_created": "2023-01-12T09:16:11.873700+01:00",
"children": [
{
"event_id": "63395",
"time_created": "2023-01-12T09:16:41.285390+01:00",
"operation_id": "25180329",
"children": []
}
]
},
{
"event_id": "63395",
"time_created": "2023-01-12T09:16:41.285390+01:00",
"operation_id": "25180329",
"children": []
}
]
查看
class ModelList(generics.ListAPIView):
permission_classes = [permissions.IsAuthenticated]
queryset = Model.objects.all()
serializer_class = ModelSerializer
def get_queryset(self):
return Model.objects.filter(
~Q(
Q(event_id=F('event_id'))
& Q(operation_id__gt=F('operation_id'))
)
)
1条答案
按热度按时间eh57zj3b1#
您可以通过使用子查询筛选出具有较高
operation_id
值的记录,然后使用结果查询集筛选出具有相同event_id
的记录来实现这一点。