在django view中给form传入参数的例子


Posted in Python onJuly 19, 2019

在django的form表单会出现,在form的验证或者保存时需要非form中的field的信息参数。例如在对操作进行记录,我们需要根据将记录的操作人设置为当前的用户,所以在view中我们需要将user的信息传入到form中,方便在form.save()d的方法使用。

models

# models.py

from django.db import models
from django.contrib.auth.models import User


class Record(models.Model):

 user = models.ForeignKey(User, on_delete=models.CASADE, verbose_name='操作者')
 operate = models.CharField(max_length=20, verbose_name='操作')

我们创建一个record模型,里面有user以及operate2个field。

forms

# forms.py

from django import forms

from .models import Record


class RecordForm(forms.ModelForm):

 def __init__(self, *args, **kwargs):
  self.user = kwargs.pop('user')
  super().__init__(*args, **kwargs)

 def save(self, commit=True):
  instance = super().save(commit=False)
  instance.user = self.user
  if commit:
   instance.save()
  return instance

 class Meta:
  model = Record
  fields = ['operate', ]

在form中我们首先使用ModelForm方便我们对将表单直接转化为model并保存。我们在__init__方法中将传入的user保存为参数,并在save方法中取出并使用。

views

# views.py

from django.views.generic import FormView

from .forms import RecordForm


class RecordView(FormView):
 form_class = RecordForm

 def get_form_kwargs(self):
  kwargs = super().get_form_kwargs()
  kwargs.update({
   'user': self.request.user,
  })
  return kwargs

 ...

我们在get_form_kwargs传入user的参数变量,这样form中就可以获得这一参数。

以上这篇在django view中给form传入参数的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
跟老齐学Python之Python文档
Oct 10 Python
python根据出生日期获得年龄的方法
Mar 31 Python
python实现带声音的摩斯码翻译实现方法
May 20 Python
Python中datetime常用时间处理方法
Jun 15 Python
解决Python字典写入文件出行首行有空格的问题
Sep 27 Python
Python3实现发送QQ邮件功能(html)
Dec 15 Python
对python产生随机的二维数组实例详解
Dec 13 Python
Python collections模块使用方法详解
Aug 28 Python
pytorch 利用lstm做mnist手写数字识别分类的实例
Jan 10 Python
new_zeros() pytorch版本的转换方式
Feb 18 Python
python 比较字典value的最大值的几种方法
Apr 17 Python
详解Scrapy Redis入门实战
Nov 18 Python
使用Python制作表情包实现换脸功能
Jul 19 #Python
解决Django一个表单对应多个按钮的问题
Jul 18 #Python
Django工程的分层结构详解
Jul 18 #Python
django mysql数据库及图片上传接口详解
Jul 18 #Python
解决django中ModelForm多表单组合的问题
Jul 18 #Python
浅谈Django中view对数据库的调用方法
Jul 18 #Python
django-rest-framework解析请求参数过程详解
Jul 18 #Python
You might like
用Flash图形化数据(二)
2006/10/09 PHP
浅析PHP substr,mb_substr以及mb_strcut的区别和用法
2013/06/21 PHP
php读取和保存base64编码的图片内容
2017/04/22 PHP
关于php支持的协议与封装协议总结(推荐)
2017/11/17 PHP
jquery.jstree 增加节点的双击事件代码
2010/07/27 Javascript
javascript各浏览器中option元素的表现差异
2011/04/07 Javascript
jQuery常见开发技巧详细整理
2013/01/02 Javascript
javascript中如何处理引号编码"
2013/08/15 Javascript
jquery获取子节点和父节点的示例代码
2013/09/10 Javascript
JS小游戏之极速快跑源码详解
2014/09/25 Javascript
node.js中的fs.writeSync方法使用说明
2014/12/15 Javascript
深入理解javascript中的 “this”
2017/01/17 Javascript
详解webpack+gulp实现自动构建部署
2017/06/29 Javascript
VsCode插件整理(小结)
2017/09/14 Javascript
Bootstrap-table使用footerFormatter做统计列功能
2018/09/07 Javascript
vue element实现表格合并行数据
2020/11/30 Vue.js
JS相册图片抖动放大展示效果的示例代码
2021/01/29 Javascript
[50:58]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 Mineski vs EG
2018/04/03 DOTA
Python 使用os.remove删除文件夹时报错的解决方法
2017/01/13 Python
详谈Python基础之内置函数和递归
2017/06/21 Python
Django查询数据库的性能优化示例代码
2017/09/24 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
2017/12/28 Python
Python使用matplotlib绘制多个图形单独显示的方法示例
2018/03/14 Python
python3 读写文件换行符的方法
2018/04/09 Python
使用Python进行中文繁简转换的实现代码
2019/10/18 Python
python实现人机五子棋
2020/03/25 Python
Python文本文件的合并操作方法代码实例
2020/03/31 Python
python PyAUtoGUI库实现自动化控制鼠标键盘
2020/09/09 Python
FitFlop美国官网:英国符合人体工学的鞋类品牌
2018/10/05 全球购物
心理健康教育心得体会
2013/12/29 职场文书
业务副厂长岗位职责
2014/01/03 职场文书
现场施工员岗位职责
2014/03/10 职场文书
企业仓管员岗位职责
2014/06/15 职场文书
党员干部反四风民主生活会对照检查材料思想汇报
2014/10/12 职场文书
毕业典礼邀请函
2015/01/31 职场文书
开发者首先否认《遗弃》被取消的传言
2022/04/11 其他游戏