在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 相关文章推荐
使用scrapy实现爬网站例子和实现网络爬虫(蜘蛛)的步骤
Jan 23 Python
Python读取本地文件并解析网页元素的方法
May 21 Python
Python 做曲线拟合和求积分的方法
Dec 29 Python
PyTorch搭建一维线性回归模型(二)
May 22 Python
python实现函数极小值
Jul 10 Python
关于python中密码加盐的学习体会小结
Jul 15 Python
tesserocr与pytesseract模块的使用方法解析
Aug 30 Python
Django实现CAS+OAuth2的方法示例
Oct 30 Python
基于pygame实现童年掌机打砖块游戏
Feb 25 Python
基于python图像处理API的使用示例
Apr 03 Python
Django-silk性能测试工具安装及使用解析
Nov 28 Python
写好Python代码的几条重要技巧
May 21 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
header()函数使用说明
2006/11/23 PHP
PHP 实现多服务器共享 SESSION 数据
2009/08/15 PHP
采用CSS和JS,刚好我最近有个站点要用到下拉菜单!
2006/06/26 Javascript
一个简单的javascript类定义例子
2009/09/12 Javascript
js利用数组length属性清空和截短数组的小例子
2014/01/15 Javascript
JS的参数传递示例介绍
2014/02/08 Javascript
jQuery使用drag效果实现自由拖拽div
2015/06/11 Javascript
jQuery实现Tab选项卡切换效果简单演示
2015/11/23 Javascript
JS获取文件大小方法小结
2015/12/08 Javascript
AngularJS 日期格式化详解
2015/12/23 Javascript
基于jquery fly插件实现加入购物车抛物线动画效果
2016/04/05 Javascript
JavaScript中setTimeout的那些事儿
2016/11/14 Javascript
Bootstrap导航条学习使用(二)
2017/02/08 Javascript
纯原生js实现贪吃蛇游戏
2020/04/16 Javascript
详解微信小程序审核不通过的解决方法
2018/01/17 Javascript
Vue.js 踩坑记之双向绑定
2018/05/03 Javascript
jQuery实现根据身份证号获取生日、年龄、性别等信息的方法
2019/01/09 jQuery
vue axios封装httpjs,接口公用配置拦截操作
2020/08/11 Javascript
微信小程序实现点击导航标签滚动定位到对应位置
2020/11/19 Javascript
[01:36]DOTA2完美大师赛趣味视频之与队友相处的十万个技巧
2017/11/19 DOTA
浅谈Python浅拷贝、深拷贝及引用机制
2016/12/15 Python
python基础教程之五种数据类型详解
2017/01/12 Python
PyQt5根据控件Id获取控件对象的方法
2019/06/25 Python
python 中xpath爬虫实例详解
2019/08/26 Python
Python爬虫爬取、解析数据操作示例
2020/03/27 Python
TensorFlow2.X使用图片制作简单的数据集训练模型
2020/04/08 Python
Python 改变数组类型为uint8的实现
2020/04/09 Python
keras处理欠拟合和过拟合的实例讲解
2020/05/25 Python
pyqt5 textEdit、lineEdit操作的示例代码
2020/08/12 Python
贪睡宠物用品:Snoozer Pet Products
2020/02/04 全球购物
Android面试题附答案
2014/12/08 面试题
行政部工作岗位职责范本
2014/03/05 职场文书
小学一年级评语大全
2014/04/22 职场文书
金融事务专业求职信
2014/04/25 职场文书
合伙经营协议书范本
2014/09/13 职场文书
水电工岗位职责
2015/02/14 职场文书