在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程序
Apr 04 Python
详解python实现读取邮件数据并下载附件的实例
Aug 03 Python
python框架中flask知识点总结
Aug 17 Python
Python使用pandas对数据进行差分运算的方法
Dec 22 Python
Python Matplotlib库安装与基本作图示例
Jan 09 Python
selenium+python自动化测试之多窗口切换
Jan 23 Python
浅谈python之自动化运维(Paramiko)
Jan 31 Python
Keras—embedding嵌入层的用法详解
Jun 10 Python
Python定时任务APScheduler安装及使用解析
Aug 07 Python
selenium3.0+python之环境搭建的方法步骤
Feb 01 Python
Pytorch中Softmax和LogSoftmax的使用详解
Jun 05 Python
Python语言规范之Pylint的详细用法
Jun 24 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
smarty模板中使用get、post、request、cookies、session变量的方法
2014/04/24 PHP
php数值计算num类简单操作示例
2020/05/15 PHP
javascript下IE与FF兼容函数收集
2008/09/17 Javascript
javascript入门基础之私有变量
2010/02/23 Javascript
关于JS管理作用域的问题
2013/04/10 Javascript
JQuery中form验证出错信息的查看方法
2013/10/08 Javascript
js中for in的用法示例解析
2013/12/25 Javascript
js取float型小数点后两位数的方法
2014/01/18 Javascript
14款经典网页图片和文字特效的jQuery插件-前端开发必备
2015/08/25 Javascript
node.js express安装及示例网站搭建方法(分享)
2016/08/22 Javascript
微信小程序 location API接口详解及实例代码
2016/10/12 Javascript
JavaScript对象封装的简单实现方法(3种方法)
2017/01/03 Javascript
Node.js数据库操作之连接MySQL数据库(一)
2017/03/04 Javascript
JS实现禁止用户使用Ctrl+鼠标滚轮缩放网页的方法
2017/04/28 Javascript
Vue.js实现微信过渡动画左右切换效果
2017/06/13 Javascript
JS实现小球的弹性碰撞效果
2017/11/11 Javascript
js实现点击按钮复制文本功能
2020/07/20 Javascript
关于vue-cli 3配置打包优化要点(推荐)
2019/04/22 Javascript
微信小程序自定义tabbar custom-tab-bar 6s出不来解决方案(cover-view不兼容)
2019/11/01 Javascript
[57:22]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第五场
2018/04/10 DOTA
Python编程实战之Oracle数据库操作示例
2017/06/21 Python
微信跳一跳自动运行python脚本
2018/01/08 Python
python 中的list和array的不同之处及转换问题
2018/03/13 Python
使用Anaconda3建立虚拟独立的python2.7环境方法
2018/06/11 Python
python实现黑客字幕雨效果
2018/06/21 Python
python GUI库图形界面开发之PyQt5单行文本框控件QLineEdit详细使用方法与实例
2020/02/27 Python
Python装饰器的应用场景代码总结
2020/04/10 Python
利用CSS3的定位页面元素
2009/08/29 HTML / CSS
Sandro Paris美国官网:典雅别致的法国时尚服饰品牌
2017/12/26 全球购物
奥兰多迪士尼门票折扣:Undercover Tourist
2018/07/09 全球购物
JBL美国官方商店:扬声器、耳机等
2019/12/01 全球购物
2014年小学教师工作总结
2014/11/10 职场文书
爱心募捐通知范文
2015/04/27 职场文书
单位同意报考证明
2015/06/17 职场文书
中学教代会开幕词
2016/03/04 职场文书
HTML中的表单元素介绍
2022/02/28 HTML / CSS