Django之modelform

Posted 孔扎根

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django之modelform相关的知识,希望对你有一定的参考价值。

在django中内置了form类和model类,当页面中的form值和model字段值完全一样时,此时可以通过model生成一个完全一样的form,Django中的modelForm就因此而生。

目标:

  定义Author表,通过modelform提交数据到数据库

 

创建工程及app

python django-admin.py startproject formstudy
cd formstudy
python manager.py startapp study

 

编辑models.py

from __future__ import unicode_literals

from django.db import models

# Create your models here.

TITLE_CHOICES = (
    (\'MR\',\'Mr.\'),
    (\'MRS\',\'Mrs.\'),
    (\'MS\',\'Ms.\'),
)

class Author(models.Model):
    name = models.CharField(max_length=100)
    title = models.CharField(max_length=3,choices=TITLE_CHOICES)
    birth_date = models.DateField(blank=True,null=True)

    def __unicode__(self):
        return self.name

class Book(models.Model):
    name = models.CharField(max_length=100)
    authors = models.ManyToManyField(Author)

 

在app目录下新建forms.py

 

 修改views.py

 

修改urls.py

urlpatterns = [
    url(r\'^admin/\', admin.site.urls),
    url(r\'^testModelform/$\', views.testModelForm, name=\'testModelForm\'),
]

 

在templates目录下创建testModelForm.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Mode测试</title>
</head>
<body>
    <form method="post" action=".">{% csrf_token %}
        <table>
            <tr>
                <td>
                    <label for="id_name">作者名:</label>
                </td>
                <td>
                    {{ form_info.name }}
                </td>
                <td>
                    {{ form_info.name.errors }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="id_title">标题:</label>
                </td>
                <td>
                    {{ form_info.title }}
                </td>
                <td>
                    {{ form_info.title.errors }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="id_title">出生日期:</label>
                </td>
                <td>
                    {{ form_info.birth_date }}
                </td>
                <td>
                    {{ form_info.birth_date.errors }}
                </td>
            </tr>
            <tr>
                <td>
                    <input type="submit" value="注册">
                </td>
                <td>
                    <input type="reset" value="重置">
                </td>
            </tr>
        </table>
    </form>
</body>
</html>

 

修改admin.py

from django.contrib import admin
import models
# Register your models here.
class AuthorAdmin(admin.ModelAdmin):
    list_display = [\'name\',\'title\',\'birth_date\']

admin.site.register(models.Author)

 

修改settings.py

INSTALLED_APPS = [
    \'django.contrib.admin\',
    \'django.contrib.auth\',
    \'django.contrib.contenttypes\',
    \'django.contrib.sessions\',
    \'django.contrib.messages\',
    \'django.contrib.staticfiles\',
    \'study\',
]

 

启动服务

python manage.py runserver 127.0.0.1:8001

 

效果图

 

此时可以通过表单提交数据到数据库了

以上是关于Django之modelform的主要内容,如果未能解决你的问题,请参考以下文章

Django之ModelForm组件

Django之ModelForm详解

django之ModelForm组件

Django之modelform

Django之ModelForm

Django之modelform组件