在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迭代器与生成器详解
Mar 10 Python
Python存取XML的常见方法实例分析
Mar 21 Python
酷! 程序员用Python带你玩转冲顶大会
Jan 17 Python
TensorFlow 滑动平均的示例代码
Jun 19 Python
使用python打印十行杨辉三角过程详解
Jul 10 Python
ubuntu 18.04 安装opencv3.4.5的教程(图解)
Nov 04 Python
python 实现将Numpy数组保存为图像
Jan 09 Python
通过cmd进入python的步骤
Jun 16 Python
Android Q之气泡弹窗的实现示例
Jun 23 Python
Django如何批量创建Model
Sep 01 Python
Pyinstaller打包Scrapy项目的实现步骤
Sep 22 Python
Python自动化实战之接口请求的实现
May 30 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
解析PHP获取当前网址及域名的实现代码
2013/06/23 PHP
深入php中var_dump方法的使用详解
2013/06/24 PHP
php递归遍历删除文件的方法
2015/04/17 PHP
php使用GD2绘制几何图形示例
2017/02/15 PHP
在TP5数据库中四个字段实现无限分类的示例
2019/10/18 PHP
PHP过滤器 filter_has_var() 函数用法实例分析
2020/04/23 PHP
由浅到深了解JavaScript类
2006/09/08 Javascript
JavaScript 中的事件教程
2007/04/05 Javascript
让任务管理器中的CPU跳舞的js代码
2008/11/01 Javascript
ajax如何实现页面局部跳转与结果返回
2015/08/24 Javascript
JavaScript+CSS实现仿Mootools竖排弹性动画菜单效果
2015/10/14 Javascript
jQuery实现放大镜效果实例代码
2016/03/17 Javascript
javascript基于原型链的继承及call和apply函数用法分析
2016/12/15 Javascript
JavaScript中数据类型转换总结
2016/12/25 Javascript
angular中使用Socket.io实例代码
2017/06/03 Javascript
Vue2.0 给Tab标签页和页面切换过渡添加样式的方法
2018/03/13 Javascript
解决vue this.$forceUpdate() 处理页面刷新问题(v-for循环值刷新等)
2018/07/26 Javascript
分享5个顶级的JavaScript Ajax组件库
2018/09/16 Javascript
使用element-ui +Vue 解决 table 里包含表单验证的问题
2020/07/17 Javascript
玩转python爬虫之URLError异常处理
2016/02/17 Python
简单谈谈Python中的元祖(Tuple)和字典(Dict)
2017/04/21 Python
Python+OpenCV实现车牌字符分割和识别
2018/03/31 Python
详解Python字典小结
2018/10/20 Python
Python并发:多线程与多进程的详解
2019/01/24 Python
PyQt5根据控件Id获取控件对象的方法
2019/06/25 Python
利用Python绘制有趣的万圣节南瓜怪效果
2019/10/31 Python
Python内置函数locals和globals对比
2020/04/28 Python
浅谈python opencv对图像颜色通道进行加减操作溢出
2020/06/03 Python
通过canvas转换颜色为RGBA格式及性能问题的解决
2019/11/22 HTML / CSS
戛纳奢侈品商店:Jacques Loup法国
2019/11/04 全球购物
意大利时尚奢侈品店:D’Aniello Boutique
2021/01/19 全球购物
外语专业毕业生自我评价分享
2013/10/05 职场文书
怎样拟定创业计划书
2014/05/01 职场文书
2014年城管工作总结
2014/11/20 职场文书
家长对孩子的寒假评语
2015/10/09 职场文书
Pytest中skip和skipif的具体使用方法
2021/06/30 Python