Django第四课——ModelForm用法

内容概要:

1.新增数据库表中数据

2.更新数据库表中数据



1.新增数据库表中数据

views文件夹==》mf.py中

‘‘‘
ModelForm的功能介绍:
1.获取所有或指定字段
2.新增数据库表中数据
3.更新数据库表中数据
‘‘‘
from django.shortcuts import render
from django import forms
from app01 import models

class UModelForm(forms.ModelForm):
    class Meta:#定义元类,同时能将关联的数据全部拿到(ForeignKey)
        model = models.User #和models.py中的User表关联,注意写法:model,没有s!!!
        fields = ‘__all__‘ #取全部字段
#新增数据方法,并且同步到数据库
def index(request):
    if request.method ==‘GET‘:
        obj =UModelForm()
        return render(request,‘mf.html‘,{‘obj‘:obj})
    elif request.method ==‘POST‘:
        obj = UModelForm(request.POST)
        if obj.is_valid():
            print(obj.cleaned_data)
            # models.User.objects.create(**obj.cleaned_data)#新增数据方法,或者用obj.save()
            obj.save()
        return render(request, ‘mf.html‘, {‘obj‘:obj})

  

  mf.html中

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form method="post" action="/mf/">
    {% csrf_token %}
    {{ obj.as_p }}
    <input type="submit" value="提交">
</form>

</body>
</html>

  models.py中

from django.db import models

class UserType(models.Model):
    name = models.CharField(max_length=32)
    def __str__(self):
        return self.name

class User(models.Model):
    name = models.CharField(max_length=32)
    email = models.EmailField(max_length=32)
    u_type = models.ForeignKey(‘UserType‘) #一对多
    m = models.ManyToManyField(‘M2M‘) #多对多

class M2M(models.Model):
    name = models.CharField(max_length=32)
    def __str__(self):
        return self.name

  urls.py中

from django.conf.urls import url
from django.contrib import admin
from app01.views import fm
from app01.views import mf

urlpatterns = [
    url(r‘^admin/‘, admin.site.urls),
    url(r‘^fm/‘, fm.index),
    url(r‘^aa/‘, fm.aa),
    url(r‘^mf/‘, mf.index),
]

  2.更新数据库表中数据

views文件夹==》mf.py中

‘‘‘
ModelForm的功能介绍:
1.获取所有或指定字段
2.新增数据库表中数据
3.更新数据库表中数据
‘‘‘
from django.shortcuts import render
from django import forms
from app01 import models

class UModelForm(forms.ModelForm):
    class Meta:#定义元类,同时能将关联的数据全部拿到(ForeignKey)
        model = models.User #和models.py中的User表关联,注意写法:model,没有s!!!
        fields = ‘__all__‘ #取全部字段

#更新数据库中数据
def edit_index(request,nid):
    if request.method ==‘GET‘:
        model_obj = models.User.objects.get(id=nid)
        obj =UModelForm(instance=model_obj) #带上现在的值
        return render(request,‘mf1.html‘,{‘obj‘:obj,‘nid‘:nid})
    elif request.method == ‘POST‘:
        model_obj = models.User.objects.get(id=nid)

        obj = UModelForm(request.POST,instance=model_obj) #这个地方也要加上instance
        if obj.is_valid():
            obj.save()
        return render(request, ‘mf1.html‘, {‘obj‘: obj})

 mf1.html中

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form method="post" action="/edit-mf-{{ nid }}/">
    {% csrf_token %}
    {{ obj.as_p }}
    <input type="submit" value="提交">
</form>

</body>
</html>

  models.py中

from django.db import models

class UserType(models.Model):
    name = models.CharField(max_length=32)
    def __str__(self):
        return self.name

class User(models.Model):
    name = models.CharField(max_length=32)
    email = models.EmailField(max_length=32)
    u_type = models.ForeignKey(‘UserType‘) #一对多
    m = models.ManyToManyField(‘M2M‘) #多对多

class M2M(models.Model):
    name = models.CharField(max_length=32)
    def __str__(self):
        return self.name

  urls.py中

from django.conf.urls import url
from django.contrib import admin
from app01.views import fm
from app01.views import mf

urlpatterns = [
    url(r‘^admin/‘, admin.site.urls),
    url(r‘^fm/‘, fm.index),
    url(r‘^aa/‘, fm.aa),
    url(r‘^mf/‘, mf.index),
    url(r‘^edit-mf-(\d+)‘, mf.edit_index),
]

  

 

时间: 2024-09-30 09:31:41

Django第四课——ModelForm用法的相关文章

django第四课 模板标签,继承与引用

pycharm 远程同步配置 会出问题 不自动同步 1.常用的模板标签 -作用是什么? -常用标签 总结:语法 {% tag %} {% endtag %} {% tag 参数 参数 %} 案例: views.py设置把里面的index 里面的students以表格形式显示 1 def index(request): 2 3 students = [ 4 {'id': 10, 'name': '张三', 'age': 18, 'sex': '男'}, 5 {'id': 11, 'name': '

Django之路——form modelform formset modelformset的各种用法

首先上结论: form适用于对单个表单的操作,并且需要对每个字段的验证规则自定义. modelform:适用于对用户提交的单个表单操作,字段可以用model中的表的字段来作为验证规则,适用于快速的进行增加.修改. formset:适用于对多个表单进行操作,字段需要也可以用model中的表的字段来作为验证规则. modelfoemset:适用于对多个表单进行操作,字段需要也可以用model中的表的字段来作为验证规则,速度可能快一些(有待考证) form用法 后端代码 from django.for

django模型表单ModelForm

如果你正在构建一个数据库驱动的应用,那么你可能会有与Django的模型紧密映射的表单.比如,你有个BlogComment模型,并且你还想创建一个表单让大家提交评论到这个模型中.在这种情况下,写一个forms.Form类,然后在表单类中定义字段,这种一般创建表单的做法是冗余的,因为你已经在ORM模型model中定义了字段的属性和功能,完全没必要重新写一遍字段. 一.核心用法 基于这个原因,Django提供一个辅助类帮助我们利用Django的ORM模型model创建Form. 像下面这样: >>&

【Cocos游戏实战】功夫小子第四课之功夫小子之设置功能和图籍场景的实现

转载请注明出处:http://blog.csdn.net/suool/article/details/46553463 本节课的视频教程地址是: 第四课在此 如果本教程有帮助到您,希望您能点击进去观看一下,而且现在注册成为极客学院的会员,验证手机号码和邮箱号码会赠送三天的会员时间,手机端首次也可以领取五天的会员时间哦(即使是购买年会员目前也仅仅是年费260),成为极客学院学习会员可以无限制的下载和观看所有的学院网站的视频,谢谢您的支持! 第三课我们学习了过渡场景和主开始菜单的分析和实现.这节课我

【Linux探索之旅】第三部分第四课:后台运行及合并多个终端

内容简介 1.第三部分第四课:后台运行及合并多个终端 2.第三部分第五课预告:延时执行,唯慢不破 后台运行及合并多个终端 上一课(<[Linux探索之旅]第三部分第三课:监视系统活动,滴水不漏>)中,我们简单介绍了进程,也学习了如何列出系统中的进程,如何过滤列表结果,还有如何结束进程. 这一课我们继续乘胜追击,一路向北,来学习进程的后台运行. 我们使用的终端让我们难免有一种感觉:我们每次只能在一个终端中运行一个进程.但其实这是大错特错的. 终端还可以运行后台进程.要使进程一个在后台运行,有几种

【Linux探索之旅】第二部分第四课:文件操纵,鼓掌之中

内容简介 1.第二部分第四课:文件操纵,鼓掌之中 2.第二部分第五课预告:用户和权限 文件操纵,鼓掌之中 既然上一课我们学习了Linux中的文件组织方式,那么现在就该是玩弄,啊不,是操纵它们的时候了. 文件操作有哪些呢?一般就是显示文件内容啦,还有拷贝文件,移动文件,删除文件,等等. 这一课我们还会学习链接的知识,认识硬链接和软链接的区别和原理. 当然了,虽说是文件操作,但是目录操作我们也会说.因为在Linux中,一切皆文件,目录也是文件. 这一课有很重要的基础概念,而且要学不少命令,都是很常用

C语言探索之旅】 第一部分第四课第三章:变量的世界之显示变量内容

内容简介 1.课程大纲 2.第一部分第四课第三章:变量的世界之显示变量内容 3.第一部分第五课预告:基本运算 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. C语言编程基础知识 什么是编程? 工欲善其事,必先利其器 你的第一个程序 变量的世界 基本运算 条件表达式 循环语句 实战:第一个C语言小游戏 函数 练习题 习作:完善第一个C语言小游戏 C语言高级技术 模块化编程 进击的指针,C语言王牌 数组 字符串 预处理 创建你自己的变量

Django文件上传机制用法详解(转)

Django文件上传机制用法详解 http://www.jbxue.com/article/24283.html 分享下Django文件上传机制的用法,包括基本上传文件的原理,以及如何处理上传文件的方法,需要的朋友参考下. 当Django处理上传一个文件时,文件数据被放在request.FILES中. 这个文档解释文件怎么样被存储在磁盘上或者内存中,怎样定制默认的行为. 一,基本文件上传考虑一个包含FileField的简单的表单: 复制代码 代码示例: from  django  import 

第四课-第一讲04_01_Linux用户管理命令详解

第四课-第一讲04_01_Linux用户管理命令详解1.useradd [option] USERNAME-u UID(大于500且没使用过的)-c 用户说明,COMMENT-d 家目录 HOME-g GID 基本组ID-G GID,....附加值ID-s 默认shell,指定要用的shell的路径-m(常和-k一起用) 强制指定家目录-M 不创建用户家目录环境变量:PATHHISTSIZESHELL:保持当前用户的默认shell的路径/etc/shells:指定了当前系统可用的安全shell/