Django ModelForm 和 models.Model 有什么区别?

Ash*_*y.W 2 django django-models

我正在学习 Django,但无法理解 ModelForm 和 models.Model,有人能解释它们之间的区别吗?谢谢!

Kev*_* L. 5

改编自django 文档

\n\n

AModelForm是一个Form ,它与特定Model中定义的字段密切对应。模型是通过子类化来定义的models.Model

\n\n

AModel是有关您的数据的信息源。它包含您存储的数据的基本字段和行为。通常,每个模型映射到单个数据库表。当您开发 Web 应用程序时,您\xe2\x80\x99 可能会拥有与 Django 模型紧密映射的表单。因此,Django 提供了一个帮助程序类,可让您从 Django 模型创建 Form 类。这个辅助类就是ModelForm

\n\n

您创建的sModelForm将在模板中呈现,以便用户可以创建或更新存储在 s 定义的数据库表中的实际数据Model

\n\n

例如,假设您想在 Web 应用程序中存储有关文章的数据,您首先需要定义一个名为 Article 的模型,如下所示:

\n\n

在你的 models.py 中:

\n\n
from django.db import models\n\nclass Article(models.Model):\n    title = models.CharField(max_length=30)\n    body = models.TextField(max_length=300)\n
Run Code Online (Sandbox Code Playgroud)\n\n

在 forms.py 中,您将创建一个modelForm来与您刚刚创建的Article模型相对应。

\n\n
from .models import Article\nfrom django.forms import ModelForm\n\nclass ArticleForm(ModelForm):\n    class Meta:\n        model = Article\n        fields = [\'title\', \'body\']\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后在你的views.py中你可以渲染你的文章形式:

\n\n
from django.shortcuts import render\nfrom django.http import HttpResponseRedirect\n\nfrom .forms import ArticleForm\n\ndef article_form_view(request):\n    # if this is a POST request we need to process the form data\n    if request.method == \'POST\':\n        # create a form instance and populate it with data from the request:\n        form = ArticleForm(request.POST)\n        # check whether it\'s valid:\n        if form.is_valid():\n            # process the data in form.cleaned_data as required\n            # ...\n            # redirect to a new URL:\n            return HttpResponseRedirect(\'/\')\n\n    # if a GET (or any other method) we\'ll create a blank form\n    else:\n        form = ArticleForm()\n\n    return render(request, \'article_form.html\', {\'form\': form})\n
Run Code Online (Sandbox Code Playgroud)\n