{"title":"模型表单函数","version":"3.1","locale":"zh-hans","docname":"ref/forms/models","url":"/zh-hans/3.1/ref/forms/models/","canonical":"https://djangodocs.dev/zh-hans/3.1/ref/forms/models/","summary":"模型表单 API 参考。关于模型表单的介绍材料，请参见 从模型创建表单 主题指南。 modelform_factory Link to this heading # modelform_factory ( model , form = ModelForm , fields = None , exclude = None ,…","html":"<h1>模型表单函数<a class=\"heading-anchor\" href=\"#model-form-functions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>模型表单 API 参考。关于模型表单的介绍材料，请参见 <a class=\"reference internal\" href=\"/zh-hans/3.1/topics/forms/modelforms/\"><span class=\"doc\">从模型创建表单</span></a> 主题指南。</p>\n<section id=\"modelform-factory\">\n<span id=\"module-django.forms.models\"></span><h2><code class=\"docutils literal notranslate\"><span class=\"pre\">modelform_factory</span></code><a class=\"heading-anchor\" href=\"#modelform-factory\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.forms.models.modelform_factory\">\n<span class=\"sig-name descname\"><span class=\"pre\">modelform_factory</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">model</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">form</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">ModelForm</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">fields</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">exclude</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">formfield_callback</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">widgets</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">localized_fields</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">labels</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">help_texts</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">error_messages</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">field_classes</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.models.modelform_factory\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>为给定的 <code class=\"docutils literal notranslate\"><span class=\"pre\">model</span></code> 返回一个 <a class=\"reference internal\" href=\"/zh-hans/3.1/topics/forms/modelforms/#django.forms.ModelForm\" title=\"django.forms.ModelForm\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ModelForm</span></code></a> 类。你可以选择性地传递一个 <code class=\"docutils literal notranslate\"><span class=\"pre\">form</span></code> 参数作为构建 <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelForm</span></code> 的起点。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">fields</span></code> 是一个可选的字段名列表。如果提供，返回的字段中只包括命名的字段。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">exclude</span></code> 是一个可选的字段名列表。如果提供了这个列表，指定的字段将被排除在返回的字段之外，即使这些字段被列在 <code class=\"docutils literal notranslate\"><span class=\"pre\">fields</span></code> 参数中。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">formfield_callback</span></code> 是一个可调用的函数，它接收一个模型字段并返回一个表单字段。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">widgets</span></code> 是一个映射到部件的模型字段名的字典。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">localized_fields</span></code> 是一个应本地化的字段名称列表。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">labels</span></code> 是一个映射到标签的模型字段名的字典。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">help_texts</span></code> 是一个映射到帮助文本的模型字段名的字典。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">error_messages</span></code> 是一个模型字段名的字典，映射到错误信息的字典。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">field_classes</span></code> 是映射到表单字段类的模型字段名的字典。</p>\n<p>见 <a class=\"reference internal\" href=\"/zh-hans/3.1/topics/forms/modelforms/#modelforms-factory\"><span class=\"std std-ref\">ModelForm的工厂函数</span></a> 的用法示例。</p>\n<p>你必须通过关键字参数 <code class=\"docutils literal notranslate\"><span class=\"pre\">fields</span></code> 或 <code class=\"docutils literal notranslate\"><span class=\"pre\">exclude</span></code> 或表单内部 <code class=\"docutils literal notranslate\"><span class=\"pre\">Meta</span></code> 类的相应属性，明确地提供字段列表。更多信息参见 <a class=\"reference internal\" href=\"/zh-hans/3.1/topics/forms/modelforms/#modelforms-selecting-fields\"><span class=\"std std-ref\">选择要使用的字段</span></a>。忽略任何要使用的字段定义将引发 <a class=\"reference internal\" href=\"/zh-hans/3.1/ref/exceptions/#django.core.exceptions.ImproperlyConfigured\" title=\"django.core.exceptions.ImproperlyConfigured\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">ImproperlyConfigured</span></code></a> 异常。</p>\n</dd></dl>\n\n</section>\n<section id=\"modelformset-factory\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">modelformset_factory</span></code><a class=\"heading-anchor\" href=\"#modelformset-factory\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.forms.models.modelformset_factory\">\n<span class=\"sig-name descname\"><span class=\"pre\">modelformset_factory</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">model</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">form</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">ModelForm</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">formfield_callback</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">formset</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">BaseModelFormSet</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">extra</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">1</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">can_delete</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">can_order</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">max_num</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">fields</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">exclude</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">widgets</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">validate_max</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">localized_fields</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">labels</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">help_texts</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">error_messages</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">min_num</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">validate_min</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">field_classes</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.models.modelformset_factory\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>返回给定 <code class=\"docutils literal notranslate\"><span class=\"pre\">model</span></code> 类的 <code class=\"docutils literal notranslate\"><span class=\"pre\">FormSet</span></code> 类。</p>\n<p>参数 <code class=\"docutils literal notranslate\"><span class=\"pre\">model</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">form</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">fields</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">exclude</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">formfield_callback</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">widgets</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">localized_fields</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">labels</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">help_texts</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">error_messages</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">field_classes</span></code> 都传给 <a class=\"reference internal\" href=\"#django.forms.models.modelform_factory\" title=\"django.forms.models.modelform_factory\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">modelform_factory()</span></code></a>。</p>\n<p>参数 <code class=\"docutils literal notranslate\"><span class=\"pre\">formset</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">extra</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">can_delete</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">can_order</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">max_num</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">validate_max</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">min_num</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">validate_min</span></code> 会被传给 <a class=\"reference internal\" href=\"/zh-hans/3.1/ref/forms/formsets/#django.forms.formsets.formset_factory\" title=\"django.forms.formsets.formset_factory\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">formset_factory()</span></code></a>。详情参见 <a class=\"reference internal\" href=\"/zh-hans/3.1/topics/forms/formsets/\"><span class=\"doc\">表单集</span></a>。</p>\n<p>见 <a class=\"reference internal\" href=\"/zh-hans/3.1/topics/forms/modelforms/#model-formsets\"><span class=\"std std-ref\">模型表单集</span></a> 的用法示例。</p>\n</dd></dl>\n\n</section>\n<section id=\"inlineformset-factory\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">inlineformset_factory</span></code><a class=\"heading-anchor\" href=\"#inlineformset-factory\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.forms.models.inlineformset_factory\">\n<span class=\"sig-name descname\"><span class=\"pre\">inlineformset_factory</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">parent_model</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">model</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">form</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">ModelForm</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">formset</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">BaseInlineFormSet</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">fk_name</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">fields</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">exclude</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">extra</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">3</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">can_order</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">can_delete</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">True</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">max_num</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">formfield_callback</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">widgets</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">validate_max</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">localized_fields</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">labels</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">help_texts</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">error_messages</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">min_num</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">validate_min</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">field_classes</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.models.inlineformset_factory\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>使用 <a class=\"reference internal\" href=\"#django.forms.models.modelformset_factory\" title=\"django.forms.models.modelformset_factory\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">modelformset_factory()</span></code></a> 返回一个 <code class=\"docutils literal notranslate\"><span class=\"pre\">InlineFormSet</span></code>，默认值为 <code class=\"docutils literal notranslate\"><span class=\"pre\">formset=</span></code><a class=\"reference internal\" href=\"/zh-hans/3.1/topics/forms/modelforms/#django.forms.models.BaseInlineFormSet\" title=\"django.forms.models.BaseInlineFormSet\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">BaseInlineFormSet</span></code></a>、<code class=\"docutils literal notranslate\"><span class=\"pre\">can_delete=True</span></code> 和 <code class=\"docutils literal notranslate\"><span class=\"pre\">extra=3</span></code>。</p>\n<p>如果你的模型有多个 <a class=\"reference internal\" href=\"/zh-hans/3.1/ref/models/fields/#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code></a> 到 <code class=\"docutils literal notranslate\"><span class=\"pre\">parent_model</span></code>，你必须指定一个 <code class=\"docutils literal notranslate\"><span class=\"pre\">fk_name</span></code>。</p>\n<p>参见 <a class=\"reference internal\" href=\"/zh-hans/3.1/topics/forms/modelforms/#inline-formsets\"><span class=\"std std-ref\">内联表单集</span></a> 的用法示例。</p>\n</dd></dl>\n\n</section>","rootId":"model-form-functions","toc":[{"title":"modelform_factory","anchor":"modelform-factory","children":[]},{"title":"modelformset_factory","anchor":"modelformset-factory","children":[]},{"title":"inlineformset_factory","anchor":"inlineformset-factory","children":[]}],"breadcrumbs":[{"docname":"ref/index","title":"API 参考","url":"/zh-hans/3.1/ref/"},{"docname":"ref/forms/index","title":"表单","url":"/zh-hans/3.1/ref/forms/"}],"prev":{"docname":"ref/forms/fields","title":"表单字段","url":"/zh-hans/3.1/ref/forms/fields/"},"next":{"docname":"ref/forms/formsets","title":"表单集函数","url":"/zh-hans/3.1/ref/forms/formsets/"},"formats":{"html":"/zh-hans/3.1/ref/forms/models/","markdown":"/zh-hans/3.1/ref/forms/models.md","json":"/zh-hans/3.1/ref/forms/models.json"},"source":"https://github.com/django/django/blob/stable/3.1.x/docs/ref/forms/models.txt","official":"https://docs.djangoproject.com/zh-hans/3.1/ref/forms/models/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0"],"inLocales":["en","zh-hans","fr","ja","id","pt-br","ko","es","el","pl"]}