# Dokumentasi Django 5.2.8

# Formulir model

`ModelForm` API reference. For introductory material about using a `ModelForm`, see the Membuat formulir dari model topic guide.

## Model form `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 an `django.forms.models.ModelFormOptions` instance.

The structure of the generated form can be customized by defining metadata options as attributes of an inner `Meta` class. For example:

    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

Required attributes are `model`, and either `fields` or `exclude`. All other `Meta` attributes are optional.

Optional attributes, other than `localized_fields` and `formfield_callback`, expect a dictionary that maps a model field name to a value. Any field that is not defined in the dictionary falls back to the field's default value.

Invalid field names

Invalid or excluded field names in an optional dictionary attribute have no effect, since fields that are not included are not accessed.

Invalid Meta class attributes

You may define any attribute on a `Meta` class. Typos or incorrect attribute names do not raise an error.

### `error_messages`

ModelFormOptions.error_messages

  A dictionary that maps a model field name to a dictionary of error message keys (`null`, `blank`, `invalid`, `unique`, etc.) mapped to custom error messages.

  When a field is not specified, Django will fall back on the error messages defined in that model field's `django.db.models.Field.error_messages` and then finally on the default error messages for that field type.

### `exclude`

ModelFormOptions.exclude

  A tuple or list of `model` field names to be excluded from the form.

  Either `fields` or `exclude` must be set. If neither are set, an `ImproperlyConfigured` exception will be raised. If `exclude` is set and `fields` is unset, all model fields, except for those specified in `exclude`, are included in the form.

### `field_classes`

ModelFormOptions.field_classes

  A dictionary that maps a model field name to a `Field` class, which overrides the `form_class` used in the model field's `Field.formfield()` method.

  When a field is not specified, Django will fall back on the model field's default field class.

### `fields`

ModelFormOptions.fields

  A tuple or list of `model` field names to be included in the form. The value `'__all__'` can be used to specify that all fields should be included.

  If any field is specified in `exclude`, this will not be included in the form despite being specified in `fields`.

  Either `fields` or `exclude` must be set. If neither are set, an `ImproperlyConfigured` exception will be raised.

### `formfield_callback`

ModelFormOptions.formfield_callback

  A function or callable that takes a model field and returns a `django.forms.Field` object.

### `help_texts`

ModelFormOptions.help_texts

  A dictionary that maps a model field name to a help text string.

  When a field is not specified, Django will fall back on that model field's `help_text`.

### `labels`

ModelFormOptions.labels

  A dictionary that maps a model field names to a label string.

  When a field is not specified, Django will fall back on that model field's `verbose_name` and then the field's attribute name.

### `localized_fields`

ModelFormOptions.localized_fields

  A tuple or list of `model` field names to be localized. The value `'__all__'` can be used to specify that all fields should be localized.

  By default, form fields are not localized, see enabling localization of fields for more details.

### `model`

ModelFormOptions.model

  Required. The `django.db.models.Model` to be used for the `ModelForm`.

### `widgets`

ModelFormOptions.widgets

  A dictionary that maps a model field name to a `django.forms.Widget`.

  When a field is not specified, Django will fall back on the default widget for that particular type of `django.db.models.Field`.

## Model form factory functions

### `modelform_factory`

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)

  Mengembalikan sebuah kelas `ModelForm` untuk``model`` yang diberikan. Anda dapat secara pilihan melewatkan sebuah argumen `form` untuk digunakan sebagai sebuah titik permulaan untuk membangun `ModelForm`.

  `fields` adalah daftar pilihan dari nama-nama bidang. Jika disediakan, hanya bidang-bidang bernama akan disertakan dalam bidang kembalian.

  `exclude``adalah daftar pilihan dari nama-nama bidang. Jika disediakan, bidang-bidang bernama akan tidak disertakan dari bidang-bidang kembalian, bahkan jika mereka terdaftar dalam argumen ``fields`.

  `formfield_callback` adalah sebuah callable yang mengambil sebuah bidang model dan mengembalikan sebuah bidang formulir.

  `widgets` adalah sebuah dictionary dari nama-nama bidang model dipetakan pada sebuah widget.

  `localized_fields` adalah daftar dari nama dari bidang yang harus dilokalkan.

  `labels` adalah sebuah dictionary dari nama-nama bidang dipetakan pada sebuah label.

  `help_texts` adalah sebuah dictionary dari nama-nama bidang dipetakan pada sebuah bantuan teks.

  ``error_messages``adalah sebuah dictionary dari nama-nama bidang dipetakan pada sebuah dictionary dari pesan kesalahan.

  `field_classes` adalah sebuah dictionary dari nama-nama bidang dipetakan pada sebuah kelas bidang formulir.

  Lihat Fungsi pabrik ModelForm untuk contoh penggunaan.

  Anda harus menyediakan daftar dari bidang-bidang secara tegas, salah satu melalui argumen kata kunci `fields` atau `exclude`, atau atribut berhubungan pada kelas `Meta` bagian dalam formulir. Lihat Memilih bidang untuk digunakan untuk informasi lebih. Menghilangkan pengertian apapun dari bidang untuk digunakan akan menghasilkan dalam sebuah pengecualian `ImproperlyConfigured`.

### `modelformset_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)

  Mengembalikan kelas `FormSet` untuk kelas `model` yang diberikan.

  Argumen-argumen `model`, `form`, `fields`, `exclude`, `formfield_callback`, `widgets`, `localized_fields`, `labels`, `help_texts`, `error_messages`, dan `field_classes` semua dilewatkan melalui `modelform_factory()`.

  Arguments `formset`, `extra`, `can_delete`, `can_order`, `max_num`, `validate_max`, `min_num`, `validate_min`, `absolute_max`, `can_delete_extra`, and `renderer` are passed through to `formset_factory()`. See formsets for details.

  The `edit_only` argument allows preventing new objects creation.

  Lihat Model formsets untuk contoh penggunaan.

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

  Mengembalikan sebuah `InlineFormSet` menggunakan `modelformset_factory()` dengan awalan dari formset=``BaseInlineFormSet`, `can_delete=True`, dan `extra=3`.

  Jika model anda mempunyai lebih dari satu `ForeignKey` pada `parent_model`, anda harus menentukan `fk_name`.

  Lihat Formset berderet untuk contoh penggunaan.