---
title: "Modellformer"
version: 6.1
locale: sv
source: https://docs.djangoproject.com/sv/6.1/ref/forms/models/
canonical: https://djangodocs.dev/sv/6.1/ref/forms/models/
---
# Modellformer

`ModelForm` API-referens. För introduktionsmaterial om hur man använder en `ModelForm`, se ämnesguiden [Skapa formulär från modeller](/sv/6.1/topics/forms/modelforms/).

## Modellformulär `Meta` API

#### `class ModelFormOptions`

The `_meta` API is used to build forms that reflect a Django model. It is
accessible through the `_meta` attribute of each model form, and is a
`django.forms.models.ModelFormOptions` instance.

Strukturen på det genererade formuläret kan anpassas genom att definiera metadataalternativ som attribut för en inre `Meta`-klass. Till exempel:

```
from django.forms import ModelForm
from myapp.models import Book

class BookForm(ModelForm):
    class Meta:
        model = Book
        fields = ["title", "author"]
        help_texts = {
            "title": "The title of the book",
            "author": "The author of the book",
        }
        # ... other attributes
```

Obligatoriska attribut är [`model`](#django.forms.ModelFormOptions.model) och antingen [`fields`](#django.forms.ModelFormOptions.fields) eller [`exclude`](#django.forms.ModelFormOptions.exclude). Alla andra `Meta`-attribut är valfria.

Valfria attribut, förutom [`localized_fields`](#django.forms.ModelFormOptions.localized_fields) och [`formfield_callback`](#django.forms.ModelFormOptions.formfield_callback), förväntar sig en ordbok som mappar ett modellfältnamn till ett värde. Alla fält som inte definieras i ordboken faller tillbaka till fältets standardvärde.

> **Ogiltiga fältnamn**
>
> Ogiltiga eller uteslutna fältnamn i ett valfritt ordboksattribut har ingen effekt, eftersom fält som inte ingår inte används.

> **Ogiltiga metaklassattribut**
>
> Du kan definiera valfritt attribut i en `Meta`-klass. Stavfel eller felaktiga attributnamn ger inte upphov till något fel.

### `Felmeddelanden`

#### `ModelFormOptions.error_messages`

En ordlista som kopplar ett modellfältnamn till en ordlista med felmeddelandenycklar (`null`, `blank`, `invalid`, `unique`, etc.) som kopplas till anpassade felmeddelanden.

När ett fält inte anges kommer Django att använda felmeddelandena som definierats i det modellfältets [`django.db.models.Field.error_messages`](/sv/6.1/ref/models/fields/#django.db.models.Field.error_messages) och slutligen standardfelmeddelandena för den fälttypen.

### `exclude`

#### `ModelFormOptions.exclude`

En tupel eller lista med [`model`](#django.forms.ModelFormOptions.model) fältnamn som ska uteslutas från formuläret.

Antingen [`fields`](#django.forms.ModelFormOptions.fields) eller [`exclude`](#django.forms.ModelFormOptions.exclude) måste vara inställt. Om inget av dessa är inställt kommer ett [`ImproperlyConfigured`](/sv/6.1/ref/exceptions/#django.core.exceptions.ImproperlyConfigured)-undantag att genereras. Om [`exclude`](#django.forms.ModelFormOptions.exclude) är inställt och [`fields`](#django.forms.ModelFormOptions.fields) inte är inställt, inkluderas alla modellfält, förutom de som anges i [`exclude`](#django.forms.ModelFormOptions.exclude), i formuläret.

### `field_classes`

#### `ModelFormOptions.field_classes`

En ordlista som mappar ett modellfältnamn till en [`Field`](/sv/6.1/ref/forms/fields/#django.forms.Field)-klass, som åsidosätter `form_class` som används i modellfältets [`Field.formfield()`](/sv/6.1/ref/models/fields/#django.db.models.Field.formfield)-metod.

När ett fält inte anges kommer Django att använda modellfältets [standardfältklass](/sv/6.1/topics/forms/modelforms/#model-form-field-types).

### `fält`

#### `ModelFormOptions.fields`

En tupel eller lista med [`model`](#django.forms.ModelFormOptions.model) fältnamn som ska inkluderas i formuläret. Värdet `’__all__’` kan användas för att ange att alla fält ska inkluderas.

Om något fält anges i [`exclude`](#django.forms.ModelFormOptions.exclude) kommer detta inte att inkluderas i formuläret trots att det anges i [`fields`](#django.forms.ModelFormOptions.fields).

Antingen [`fields`](#django.forms.ModelFormOptions.fields) eller [`exclude`](#django.forms.ModelFormOptions.exclude) måste anges. Om ingen av dem anges kommer ett [`ImproperlyConfigured`](/sv/6.1/ref/exceptions/#django.core.exceptions.ImproperlyConfigured)-undantag att genereras.

### `formfield_callback`

#### `ModelFormOptions.formfield_callback`

En funktion eller anropbar som tar ett modellfält och returnerar ett [`django.forms.Field`](/sv/6.1/ref/forms/fields/#django.forms.Field)-objekt.

### `help_texts`

#### `ModelFormOptions.help_texts`

En ordlista som kopplar ett modellfältnamn till en hjälptextsträng.

När ett fält inte anges kommer Django att använda modellfältets [`help_text`](/sv/6.1/ref/models/fields/#django.db.models.Field.help_text).

### `labels`

#### `ModelFormOptions.labels`

En ordlista som mappar modellfältnamn till en etikettsträng.

När ett fält inte anges kommer Django att använda modellfältets [`verbose_name`](/sv/6.1/ref/models/fields/#django.db.models.Field.verbose_name) och sedan fältets attributnamn.

### `localized_fields`

#### `ModelFormOptions.localized_fields`

En tupel eller lista med [`model`](#django.forms.ModelFormOptions.model) fältnamn som ska lokaliseras. Värdet `’__all__’` kan användas för att ange att alla fält ska lokaliseras.

Som standard är formulärfält inte lokaliserade. Se [aktivera lokalisering av fält](/sv/6.1/topics/forms/modelforms/#modelforms-enabling-localization-of-fields) för mer information.

### `modell`

#### `ModelFormOptions.model`

Obligatoriskt. Klassen [`django.db.models.Model`](/sv/6.1/ref/models/instances/#django.db.models.Model) som ska användas för [`ModelForm`](/sv/6.1/topics/forms/modelforms/#django.forms.ModelForm).

### `widgets`

#### `ModelFormOptions.widgets`

En ordlista som mappar ett modellfältnamn till en [`django.forms.Widget`](/sv/6.1/ref/forms/widgets/#django.forms.Widget).

När ett fält inte anges kommer Django att använda standardwidgetaren för den specifika typen av [`django.db.models.Field`](/sv/6.1/ref/models/fields/#django.db.models.Field).

## Funktioner för modellformfabrik

### `modellform_fabrik`

#### `modelform_factory(model, form=ModelForm, fields=None, exclude=None, formfield_callback=None, widgets=None, localized_fields=None, labels=None, help_texts=None, error_messages=None, field_classes=None)`

Returnerar en [`ModelForm`](/sv/6.1/topics/forms/modelforms/#django.forms.ModelForm)-klass för den angivna `modellen`. Du kan valfritt skicka ett `form`-argument som ska användas som utgångspunkt för att konstruera `ModelForm`.

`fields` är en valfri lista med fältnamn. Om den anges kommer endast de namngivna fälten att ingå i de returnerade fälten.

`exclude` är en valfri lista med fältnamn. Om den anges kommer de angivna fälten att uteslutas från de returnerade fälten, även om de finns listade i argumentet `fields`.

`formfield_callback` är en callable som tar ett modellfält och returnerar ett formulärfält.

`widgets` är en ordbok med namn på modellfält som mappas till en widget.

`localized_fields` är en lista med namn på fält som ska lokaliseras.

`labels` är en ordbok med namn på modellfält som mappas till en etikett.

`help_texts` är en ordbok med namn på modellfält som mappats till en hjälptext.

`error_messages` är en ordbok med namn på modellfält som mappas till en ordbok med felmeddelanden.

`field_classes` är en ordbok med namn på modellfält som mappas till en formulärfältklass.

Se [ModelForm fabriksfunktion](/sv/6.1/topics/forms/modelforms/#modelforms-factory) för exempel på användning.

Du måste ange listan med fält explicit, antingen via nyckelordsargumenten `fields` eller `exclude`, eller motsvarande attribut på formulärets inre `Meta`-klass. Se [Välja de fält som ska användas](/sv/6.1/topics/forms/modelforms/#modelforms-selecting-fields) för mer information. Om du utelämnar någon definition av de fält som ska användas kommer det att resultera i ett [`ImproperlyConfigured`](/sv/6.1/ref/exceptions/#django.core.exceptions.ImproperlyConfigured) undantag.

### `modellformset_factory`

#### `modelformset_factory(model, form=ModelForm, formfield_callback=None, formset=BaseModelFormSet, extra=1, can_delete=False, can_order=False, max_num=None, fields=None, exclude=None, widgets=None, validate_max=False, localized_fields=None, labels=None, help_texts=None, error_messages=None, min_num=None, validate_min=False, field_classes=None, absolute_max=None, can_delete_extra=True, renderer=None, edit_only=False)`

Returnerar en `FormSet`-klass för den angivna `model`-klassen.

Argumenten `model`, `form`, `fields`, `exclude`, `formfield_callback`, `widgets`, `localized_fields`, `labels`, `help_texts`, `error_messages` och `field_classes` skickas alla till [`modelform_factory()`](#django.forms.models.modelform_factory).

Argumenten `formset`, `extra`, `can_delete`, `can_order`, `max_num`, `validate_max`, `min_num`, `validate_min`, `absolute_max`, `can_delete_extra` och `renderer` skickas till [`formset_factory()`](/sv/6.1/ref/forms/formsets/#django.forms.formsets.formset_factory). Se [formsets](/sv/6.1/topics/forms/formsets/) för mer information.

Argumentet `edit_only` gör det möjligt att [förhindra att nya objekt skapas](/sv/6.1/topics/forms/modelforms/#model-formsets-edit-only).

Se [Modellformsatser](/sv/6.1/topics/forms/modelforms/#model-formsets) för exempel på användning.

### `inlineformset_factory`

#### `inlineformset_factory(parent_model, model, form=ModelForm, formset=BaseInlineFormSet, fk_name=None, fields=None, exclude=None, extra=3, can_order=False, can_delete=True, max_num=None, formfield_callback=None, widgets=None, validate_max=False, localized_fields=None, labels=None, help_texts=None, error_messages=None, min_num=None, validate_min=False, field_classes=None, absolute_max=None, can_delete_extra=True, renderer=None, edit_only=False)`

Returnerar ett `InlineFormSet` med hjälp av [`modelformset_factory()`](#django.forms.models.modelformset_factory) med standardvärdena `formset=`[`BaseInlineFormSet`](/sv/6.1/topics/forms/modelforms/#django.forms.models.BaseInlineFormSet), `can_delete=True` och `extra=3`.

Om din modell har mer än en [`ForeignKey`](/sv/6.1/ref/models/fields/#django.db.models.ForeignKey) till `parent_model`, måste du ange ett `fk_name`.

Se [Inline-formulär](/sv/6.1/topics/forms/modelforms/#inline-formsets) för exempel på användning.
