---
url: "https://vueda.dev/v3/reference/api/py/vueda.core.viewsets/VuedaReadOnlyViewSet.md"
title: "VuedaReadOnlyViewSet"
---

# VuedaReadOnlyViewSet

## Overview

Read-only ViewSet for VUEDA models. Provides ``list`` and ``retrieve`` only,
with the same flex-fields, query-parameter validation, and row-level filtering
as ``VuedaViewSet``.

## `get_allowed_extra_actions` {#get_allowed_extra_actions}

Override this function to change if a user is allowed to do a certain action.

``request`` is ``None`` when model metadata or ``available_actions`` is built from a
serializer context without a request. An override must handle that case before reading
``request.user``.

Unlike :meth:`VuedaViewSet.get_allowed_extra_actions`, this offers every extra action
unconditionally, including no read gate for ``history_list``: that action is defined only
on ``VuedaViewSet``, so it never appears in ``get_extra_actions()`` here, and there is
nothing for a read gate to filter.

### Signature {#get_allowed_extra_actions-signature}

`get_allowed_extra_actions(self, request, instance)`

#### Parameters {#get_allowed_extra_actions-parameters}

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| self |  | yes |  |  |
| <span id="get_allowed_extra_actions-param-request">request</span> |  | yes |  |  |
| <span id="get_allowed_extra_actions-param-instance">instance</span> |  | no | `None` |  |

### Source {#get_allowed_extra_actions-source}

`server/vueda/core/viewsets/__init__.py:1903`

## `detail_args` {#detail_args}

## `nulls_ordering` {#nulls_ordering}

Nulls placement per field name, ``"first"`` or ``"last"``, applied wherever that field is sorted.

``VuedaOrderingFilter`` reads it. Keys are ``__``-joined field paths, as in ``ordering``.

## `nulls_ordering_flip` {#nulls_ordering_flip}

Field names in ``nulls_ordering`` whose placement flips when the field is sorted descending.

## Source

`server/vueda/core/viewsets/__init__.py:1879`
