0Pricing
Django Academy · 课时

声明 ModelForm 与 Meta.fields

用几行代码将表单绑定到模型

声明 ModelForm 与 Meta.fields 是 CoddyKit 上的免费 Django Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Django Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Django Academy 课程共包含 4 节课。

本课时的部分内容尚未翻译,以英文显示。

Why ModelForm Exists

You already have a model describing your data. A ModelForm builds a form straight from that model, so you never repeat the same fields twice. 🎯

Import ModelForm

ModelForms live in the same place as regular forms. You subclass forms.ModelForm instead of forms.Form to get the model-aware version.

from django import forms
from .models import Post

The Meta Class

A ModelForm needs an inner Meta class. Meta is where you tell the form which model it is built from and which fields to include.

class PostForm(forms.ModelForm):
    class Meta:
        model = Post
        fields = ["title", "body"]

Point at a Model

The model attribute names the class your form mirrors. Django reads that model's fields to decide which form inputs to generate for you.

class Meta:
    model = Post

Listing Fields Explicitly

The fields list controls exactly which model fields become form inputs. Naming them keeps the form intentional and safe from surprises.

fields = ["title", "body", "published"]

The Shortcut: fields = all

Setting fields to the string "__all__" includes every model field. It is handy in demos but risky, since new model fields appear automatically.

class Meta:
    model = Post
    fields = "__all__"

Excluding Instead

You can flip it with exclude to keep everything except a few fields. Prefer an explicit fields list when you can, for clarity.

class Meta:
    model = Post
    exclude = ["author"]

Auto-Generated Widgets

Django picks a sensible widget for each field automatically. A CharField becomes a text box and a BooleanField becomes a checkbox without extra work.

Validation Comes Free

Your model's rules ride along too. A field marked required or with a max length brings that same validation into the form for free.

Using It in a View

In a view you create the form the same way as any form. An empty PostForm() renders blank inputs ready for the user to fill.

def create(request):
    form = PostForm()
    return render(request, "create.html", {"form": form})

Binding to an Instance

Pass an existing object with instance and the form pre-fills its values. The same ModelForm now powers both creating and editing.

form = PostForm(instance=post)

Quick Check

Where do you tell a ModelForm which model and fields to use?

Recap: ModelForm Basics

Nice work! A ModelForm builds a form from a model using an inner Meta with model and fields. You skip repetition and inherit validation for free. ✨

常见问题解答

「声明 ModelForm 与 Meta.fields」课时是免费的吗?

是的 — 「声明 ModelForm 与 Meta.fields」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Django Academy 课程的其余内容,请升级到 CoddyKit PRO。 Django Academy 课程共包含 4 节课。

「声明 ModelForm 与 Meta.fields」这节课中我会学到什么?

用几行代码将表单绑定到模型 你通过在浏览器中直接运行的动手代码来练习 Django Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Django Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Django Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「声明 ModelForm 与 Meta.fields」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Django Academy 课中编写并运行代码吗?

能。每节 Django Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 声明 ModelForm 与 Meta.fields
  2. form.save() 与 commit=False
  3. 使用 clean 方法进行自定义验证
  4. 控件、标签和帮助文本
← 返回 Django Academy