Ash*_*y.W 2 django django-models
我正在学习 Django,但无法理解 ModelForm 和 models.Model,有人能解释它们之间的区别吗?谢谢!
改编自django 文档
\n\nAModelForm是一个Form ,它与特定Model中定义的字段密切对应。模型是通过子类化来定义的models.Model。
AModel是有关您的数据的信息源。它包含您存储的数据的基本字段和行为。通常,每个模型映射到单个数据库表。当您开发 Web 应用程序时,您\xe2\x80\x99 可能会拥有与 Django 模型紧密映射的表单。因此,Django 提供了一个帮助程序类,可让您从 Django 模型创建 Form 类。这个辅助类就是ModelForm类
您创建的sModelForm将在模板中呈现,以便用户可以创建或更新存储在 s 定义的数据库表中的实际数据Model。
例如,假设您想在 Web 应用程序中存储有关文章的数据,您首先需要定义一个名为 Article 的模型,如下所示:
\n\n在你的 models.py 中:
\n\nfrom django.db import models\n\nclass Article(models.Model):\n title = models.CharField(max_length=30)\n body = models.TextField(max_length=300)\nRun Code Online (Sandbox Code Playgroud)\n\n在 forms.py 中,您将创建一个modelForm来与您刚刚创建的Article模型相对应。
\n\nfrom .models import Article\nfrom django.forms import ModelForm\n\nclass ArticleForm(ModelForm):\n class Meta:\n model = Article\n fields = [\'title\', \'body\']\nRun Code Online (Sandbox Code Playgroud)\n\n然后在你的views.py中你可以渲染你的文章形式:
\n\nfrom 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})\nRun Code Online (Sandbox Code Playgroud)\n