# Django 5.2.8 documentation

# Modellformer

`ModelForm` API-referens. För introduktionsmaterial om hur man använder en `ModelForm`, se ämnesguiden Skapa formulär från modeller.

## Modellformulär `Meta` API

class ModelFormOptions

API:et `_meta` används för att skapa formulär som återspeglar en Django-modell. Det är tillgängligt via attributet `_meta` i varje modellformulär och är en instans av `django.forms.models.ModelFormOptions`.

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` och antingen `fields` eller `exclude`. Alla andra `Meta`-attribut är valfria.

Valfria attribut, förutom `localized_fields` och `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` och slutligen standardfelmeddelandena för den fälttypen.

### `exclude`

ModelFormOptions.exclude

  En tupel eller lista med `model` fältnamn som ska uteslutas från formuläret.

  Antingen `fields` eller `exclude` måste vara inställt. Om inget av dessa är inställt kommer ett `ImproperlyConfigured`-undantag att genereras. Om `exclude` är inställt och `fields` inte är inställt, inkluderas alla modellfält, förutom de som anges i `exclude`, i formuläret.

### `field_classes`

ModelFormOptions.field_classes

  En ordlista som mappar ett modellfältnamn till en `Field`-klass, som åsidosätter `form_class` som används i modellfältets `Field.formfield()`-metod.

  När ett fält inte anges kommer Django att använda modellfältets standardfältklass.

### `fält`

ModelFormOptions.fields

  En tupel eller lista med `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` kommer detta inte att inkluderas i formuläret trots att det anges i `fields`.

  Antingen `fields` eller `exclude` måste anges. Om ingen av dem anges kommer ett `ImproperlyConfigured`-undantag att genereras.

### `formfield_callback`

ModelFormOptions.formfield_callback

  En funktion eller anropbar som tar ett modellfält och returnerar ett `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`.

### `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` och sedan fältets attributnamn.

### `localized_fields`

ModelFormOptions.localized_fields

  En tupel eller lista med `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 för mer information.

### `modell`

ModelFormOptions.model

  Obligatoriskt. Klassen `django.db.models.Model` som ska användas för `ModelForm`.

### `widgets`

ModelFormOptions.widgets

  En ordlista som mappar ett modellfältnamn till en `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`.

## 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`-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 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 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` 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()`.

  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()`. Se formsets för mer information.

  Argumentet `edit_only` gör det möjligt att förhindra att nya objekt skapas.

  Se Modellformsatser 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()` med standardvärdena `formset=``BaseInlineFormSet`, `can_delete=True` och `extra=3`.

  Om din modell har mer än en `ForeignKey` till `parent_model`, måste du ange ett `fk_name`.

  Se Inline-formulär för exempel på användning.