在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 12 Python
Python+Selenium自动化实现分页(pagination)处理
Mar 31 Python
用pandas按列合并两个文件的实例
Apr 12 Python
python3.6.3转化为win-exe文件发布的方法
Oct 31 Python
使用Python横向合并excel文件的实例
Dec 11 Python
使用Python自动化破解自定义字体混淆信息的方法实例
Feb 13 Python
Pandas读取并修改excel的示例代码
Feb 17 Python
详解Django将秒转换为xx天xx时xx分
Sep 27 Python
根据tensor的名字获取变量的值方式
Jan 04 Python
python实现密码验证合格程序的思路详解
Jun 01 Python
python中的django是做什么的
Jul 31 Python
解决Pycharm 运行后没有输出的问题
Feb 05 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 数组遍历的差异(array_diff 的实现)
2008/03/23 PHP
php把数组值转换成键的方法
2015/07/13 PHP
php验证码生成器
2017/05/24 PHP
老生常谈php中传统验证与thinkphp框架(必看篇)
2017/06/10 PHP
网站上面有这种切换效果
2006/06/26 Javascript
收藏Javascript中常用的55个经典技巧
2007/08/12 Javascript
jQuery获取和设置表单元素的方法
2014/02/14 Javascript
javascript中数组方法汇总
2015/07/07 Javascript
PassWord输入框代码分享
2016/06/07 Javascript
require.js配合插件text.js实现最简单的单页应用程序
2016/07/12 Javascript
用原生js统计文本行数的简单示例
2016/08/19 Javascript
jQuery ajax的功能实现方法详解
2017/01/06 Javascript
gulp加批处理(.bat)实现ng多应用一键自动化构建
2017/02/16 Javascript
ionic2自定义cordova插件开发以及使用(Android)
2017/06/19 Javascript
javascript 中select框触发事件过程的分析
2017/08/01 Javascript
微信小程序利用swiper+css实现购物车商品删除功能
2019/03/06 Javascript
150行Node.js实现的dns代理工具
2019/08/02 Javascript
解决layui动态加载复选框无法选中的问题
2019/09/20 Javascript
《javascript设计模式》学习笔记七:Javascript面向对象程序设计组合模式详解
2020/04/08 Javascript
js+css3实现简单时钟特效
2020/09/13 Javascript
[01:43]深扒TI7聊天轮盘语音出处4
2017/05/11 DOTA
Python对两个有序列表进行合并和排序的例子
2014/06/13 Python
Python常用正则表达式符号浅析
2014/08/13 Python
python分割文件的常用方法
2014/11/01 Python
Python中的Numeric包和Numarray包使用教程
2015/04/13 Python
Python的IDEL增加清屏功能实例
2017/06/19 Python
浅谈flask截获所有访问及before/after_request修饰器
2018/01/18 Python
在python中利用try..except来代替if..else的用法
2019/12/19 Python
美国智能家居专家:tink
2019/06/04 全球购物
大学生会计职业生涯规划范文
2014/02/28 职场文书
金融管理毕业生求职信
2014/03/03 职场文书
2014年化验室工作总结
2014/11/21 职场文书
趵突泉导游词
2015/02/03 职场文书
三傻大闹宝莱坞观后感
2015/06/03 职场文书
将图片保存到mysql数据库并展示在前端页面的实现代码
2021/05/02 MySQL
mongodb的安装和开机自启动详细讲解
2021/08/02 MongoDB