---
title: "模型表单函数"
version: 4.1
locale: zh-hans
source: https://docs.djangoproject.com/zh-hans/4.1/ref/forms/models/
canonical: https://djangodocs.dev/zh-hans/4.1/ref/forms/models/
---
# 模型表单函数

模型表单 API 参考。关于模型表单的介绍材料，请参见 [从模型创建表单](/zh-hans/4.1/topics/forms/modelforms/) 主题指南。

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

为给定的 `model` 返回一个 [`ModelForm`](/zh-hans/4.1/topics/forms/modelforms/#django.forms.ModelForm) 类。你可以选择性地传递一个 `form` 参数作为构建 `ModelForm` 的起点。

`fields` 是一个可选的字段名列表。如果提供，返回的字段中只包括命名的字段。

`exclude` 是一个可选的字段名列表。如果提供了这个列表，指定的字段将被排除在返回的字段之外，即使这些字段被列在 `fields` 参数中。

`formfield_callback` 是一个可调用的函数，它接收一个模型字段并返回一个表单字段。

`widgets` 是一个映射到部件的模型字段名的字典。

`localized_fields` 是一个应本地化的字段名称列表。

`labels` 是一个映射到标签的模型字段名的字典。

`help_texts` 是一个映射到帮助文本的模型字段名的字典。

`error_messages` 是一个模型字段名的字典，映射到错误信息的字典。

`field_classes` 是映射到表单字段类的模型字段名的字典。

见 [ModelForm的工厂函数](/zh-hans/4.1/topics/forms/modelforms/#modelforms-factory) 的用法示例。

你必须通过关键字参数 `fields` 或 `exclude` 或表单内部 `Meta` 类的相应属性，明确地提供字段列表。更多信息参见 [选择要使用的字段](/zh-hans/4.1/topics/forms/modelforms/#modelforms-selecting-fields)。忽略任何要使用的字段定义将引发 [`ImproperlyConfigured`](/zh-hans/4.1/ref/exceptions/#django.core.exceptions.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)`

返回给定 `model` 类的 `FormSet` 类。

参数 `model`、`form`、`fields`、`exclude`、`formfield_callback`、`widgets`、`localized_fields`、`labels`、`help_texts`、`error_messages`、`field_classes` 都传给 [`modelform_factory()`](#django.forms.models.modelform_factory)。

参数 `formset`、`extra`、`can_delete`、`can_order`、`max_num`、`validate_max`、`min_num`、`validate_min`、`absolute_max`、`can_delete_extra` 和 `renderer` 被传递给 [`formset_factory()`](/zh-hans/4.1/ref/forms/formsets/#django.forms.formsets.formset_factory)。详情请见 [表单集](/zh-hans/4.1/topics/forms/formsets/)。

The `edit_only` argument allows [preventing new objects creation](/zh-hans/4.1/topics/forms/modelforms/#model-formsets-edit-only).

见 [模型表单集](/zh-hans/4.1/topics/forms/modelforms/#model-formsets) 的用法示例。

> **Changed in Django 4.0**
>
> 增加了 `renderer` 参数。

> **Changed in Django 4.1**
>
> The `edit_only` argument was added.

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

使用 [`modelformset_factory()`](#django.forms.models.modelformset_factory) 返回一个 `InlineFormSet`，默认值为 `formset=`[`BaseInlineFormSet`](/zh-hans/4.1/topics/forms/modelforms/#django.forms.models.BaseInlineFormSet)、`can_delete=True` 和 `extra=3`。

如果你的模型有多个 [`ForeignKey`](/zh-hans/4.1/ref/models/fields/#django.db.models.ForeignKey) 到 `parent_model`，你必须指定一个 `fk_name`。

参见 [内联表单集](/zh-hans/4.1/topics/forms/modelforms/#inline-formsets) 的用法示例。

> **Changed in Django 4.0**
>
> 增加了 `renderer` 参数。

> **Changed in Django 4.1**
>
> The `edit_only` argument was added.
