fix: update session error when db is pg

This commit is contained in:
ibuler 2025-04-21 11:25:49 +08:00 committed by Eric_Lee
parent cab1e0bf52
commit f4f74909a8

View File

@ -192,15 +192,16 @@ class SessionViewSet(RecordViewLogMixin, OrgBulkModelViewSet):
return Response({'msg': 'ok', 'id': activity_log.id}) return Response({'msg': 'ok', 'id': activity_log.id})
def get_queryset(self): def get_queryset(self):
queryset = super().get_queryset() \ queryset = super().get_queryset()
.prefetch_related('terminal') \
.annotate(terminal_display=F('terminal__name'))
return queryset
def filter_queryset(self, queryset): if self.request.method in ('GET',):
queryset = super().filter_queryset(queryset) queryset = (
# 解决guacamole更新session时并发导致幽灵会话的问题暂不处理 queryset.prefetch_related('terminal')
if self.request.method in ('PATCH',): .annotate(terminal_display=F('terminal__name'))
)
elif self.request.method in ('PATCH',):
# postgres reports an error for statements that use select_for_update for out join
# so we need to use select_for_update only for have not prefetch_related and annotate
queryset = queryset.select_for_update() queryset = queryset.select_for_update()
return queryset return queryset