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

# core.models

## Overview

Abstract model bases with CRUD permissions, singleton support, and email templates.

## Classes

- [ActivatableBaseModel](/v3/reference/api/py/vueda.core.models/ActivatableBaseModel.md)
- [BaseModelMeta](/v3/reference/api/py/vueda.core.models/BaseModelMeta.md)
- [EmailTemplateBase](/v3/reference/api/py/vueda.core.models/EmailTemplateBase.md)
- [FormattedNameBaseModel](/v3/reference/api/py/vueda.core.models/FormattedNameBaseModel.md)
- [FormattedNameManager](/v3/reference/api/py/vueda.core.models/FormattedNameManager.md)
- [Lookup](/v3/reference/api/py/vueda.core.models/Lookup.md)
- [SingletonModel](/v3/reference/api/py/vueda.core.models/SingletonModel.md)
- [VuedaModel](/v3/reference/api/py/vueda.core.models/VuedaModel.md)

## `apply_vueda_feature_policy` {#apply_vueda_feature_policy}

Resolve a prepared model's ``class Vueda`` policy and let each feature contribute to it.

Django sends ``class_prepared`` only for concrete and proxy models, after it has built the
model's fields and options, so a contributor sees a complete model. A contributor may call
``sender.add_to_class()`` to add a field, a generic relation, or a descriptor; a database field
added here reaches ``ModelState``, which is what makes it visible to migration generation.

A proxy takes the policy of its concrete model and gets no contributor pass of its own, because
both history triggers and workflow object state resolve a proxy to that shared table.

### Signature {#apply_vueda_feature_policy-signature}

`apply_vueda_feature_policy(sender, kwargs)`

#### Parameters {#apply_vueda_feature_policy-parameters}

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| <span id="apply_vueda_feature_policy-param-sender">sender</span> |  | yes |  |  |
| <span id="apply_vueda_feature_policy-param-kwargs">kwargs</span> |  | no |  |  |

### Source {#apply_vueda_feature_policy-source}

`server/vueda/core/models.py:856`

## `supports_vueda_feature_policy` {#supports_vueda_feature_policy}

Return whether ``model`` belongs to the current family of VUEDA model bases.

### Signature {#supports_vueda_feature_policy-signature}

`supports_vueda_feature_policy(model)`

#### Parameters {#supports_vueda_feature_policy-parameters}

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| <span id="supports_vueda_feature_policy-param-model">model</span> |  | yes |  |  |

### Source {#supports_vueda_feature_policy-source}

`server/vueda/core/models.py:851`

## Source

`server/vueda/core/models.py`
