---
url: "https://vueda.dev/v3/reference/api/vue/WidgetModel.md"
title: "WidgetModel"
---

# WidgetModel

## Overview

Renders a select, multi-select, or radio widget populated with choices fetched from a Django model.
Choices are loaded lazily: the API request is deferred until the field is focused or already has a value.
Pass the `type` prop to choose between `select`, `multiSelect`, and `radio` presentations.

## Props

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| <span id="prop-fieldApp">fieldApp</span> | `string` | yes |  | Django app label for the model whose choices this widget loads. |
| <span id="prop-fieldModel">fieldModel</span> | `string` | yes |  | Django model name used to resolve the choices endpoint. |
| <span id="prop-fieldName">fieldName</span> | `string` | yes |  | Field name on the model whose choices are fetched. |
| <span id="prop-type">type</span> | `string` | yes |  | Widget presentation variant: `"select"`, `"multiSelect"`, or `"radio"`. |
| <span id="prop-modelValue">modelValue</span> | `string\|number\|array` |  | `undefined` | The currently selected value, bound with `v-model`. |
| <span id="prop-isFilter">isFilter</span> | `boolean` |  | `false` | When true, fetches choices in filter mode (may relax required-field constraints). |

## Slots

### `slot` {#slot-slot}

Scoped slot.

## Events

| Name | Description |
| --- | --- |
| `update:modelValue` | Emitted when the widget value changes. |

[Full event reference](/v3/reference/api/vue/WidgetModel/events.md)

## Source

`client/lib/widgets/WidgetModel.vue`
