在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 31 Python
python自动12306抢票软件实现代码
Feb 24 Python
Anaconda 离线安装 python 包的操作方法
Jun 11 Python
centos6.5安装python3.7.1之后无法使用pip的解决方案
Feb 14 Python
python绘制已知点的坐标的直线实例
Jul 04 Python
Pycharm远程调试原理及具体配置详解
Aug 08 Python
pytorch中的embedding词向量的使用方法
Aug 18 Python
pygame实现五子棋游戏
Oct 29 Python
Python中remove漏删和索引越界问题的解决
Mar 18 Python
Python使用Numpy模块读取文件并绘制图片
May 13 Python
Python 整行读取文本方法并去掉readlines换行\n操作
Sep 03 Python
Windows安装Anaconda3的方法及使用过程详解
Jun 11 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简单命令代码集锦
2007/09/24 PHP
发款php蜘蛛统计插件只要有mysql就可用
2010/10/12 PHP
PHP MySQL应用中使用XOR运算加密算法分享
2011/08/28 PHP
基于php实现的php代码加密解密类完整实例
2016/10/12 PHP
详解PHP5.6.30与Apache2.4.x配置
2017/06/02 PHP
javascript setAttribute, getAttribute 在不同浏览器上的不同表现
2010/08/05 Javascript
JavaScript中“基本类型”之争小结
2013/01/03 Javascript
AngularJS中的模块详解
2015/01/29 Javascript
NodeJs基本语法和类型
2015/02/13 NodeJs
JavaScript中匿名函数用法实例
2015/03/23 Javascript
JavaScript获取当前日期是星期几的方法
2015/04/06 Javascript
JS动画效果打开、关闭层的实现方法
2015/05/09 Javascript
ECMAScript6函数剩余参数(Rest Parameters)
2015/06/12 Javascript
js匿名函数作为函数参数详解
2016/06/01 Javascript
JavaScript评论点赞功能的实现方法
2017/03/13 Javascript
vue小图标favicon不显示的解决方案
2017/09/19 Javascript
Vue 事件处理操作实例详解
2019/03/05 Javascript
vue 解决在微信内置浏览器中调用支付宝支付的情况
2020/11/09 Javascript
python对DICOM图像的读取方法详解
2017/07/17 Python
Python文件和流(实例讲解)
2017/09/12 Python
python实现周期方波信号频谱图
2018/07/21 Python
Python用字典构建多级菜单功能
2019/07/11 Python
python中bs4.BeautifulSoup的基本用法
2019/07/27 Python
Python3+Requests+Excel完整接口自动化测试框架的实现
2019/10/11 Python
python内置模块collections知识点总结
2019/12/19 Python
Pytorch自己加载单通道图片用作数据集训练的实例
2020/01/18 Python
css3中background新增的4个新的相关属性用法介绍
2013/09/26 HTML / CSS
Turnbull & Asser官网:英国皇室御用的顶级定制衬衫
2019/01/31 全球购物
一套VC试题
2015/01/23 面试题
省优秀教师事迹材料
2014/01/30 职场文书
认错检讨书
2014/10/02 职场文书
工程部文员岗位职责
2015/02/04 职场文书
承诺保证书格式
2015/02/28 职场文书
Python获取江苏疫情实时数据及爬虫分析
2021/08/02 Python
使用opencv-python如何打开USB或者笔记本前置摄像头
2022/06/21 Python
Java代码规范与质量检测插件SonarLint的使用
2022/08/05 Java/Android