在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修改字典内key对应值的方法
Jul 11 Python
Python数据类型详解(二)列表
May 08 Python
深入理解Python中变量赋值的问题
Jan 12 Python
Python + selenium + requests实现12306全自动抢票及验证码破解加自动点击功能
Nov 23 Python
Python实现的特征提取操作示例
Dec 03 Python
浅谈python的深浅拷贝以及fromkeys的用法
Mar 08 Python
在SQLite-Python中实现返回、查询中文字段的方法
Jul 17 Python
python使用flask与js进行前后台交互的例子
Jul 19 Python
使用Tensorflow将自己的数据分割成batch训练实例
Jan 20 Python
关于win10在tensorflow的安装及在pycharm中运行步骤详解
Mar 16 Python
Pytorch 使用 nii数据做输入数据的操作
May 26 Python
教你怎么用python selenium实现自动化测试
May 27 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
mysql建立外键
2006/11/25 PHP
php使用socket调用http和smtp协议实例小结
2019/07/26 PHP
tp5 sum某个字段相加得到总数的例子
2019/10/18 PHP
tp5.1框架数据库子查询操作实例分析
2020/05/26 PHP
document.compatMode介绍
2009/05/21 Javascript
javascript 动态修改样式和层叠样式表代码
2010/04/27 Javascript
JQuery优缺点分析说明
2011/04/10 Javascript
jQuery中需要注意的细节问题小结
2011/12/06 Javascript
根据配置文件加载js依赖模块
2014/12/29 Javascript
javascript判断复选框是否选中的方法
2015/10/16 Javascript
JavaScript中捕获/阻止捕获、冒泡/阻止冒泡方法
2016/12/07 Javascript
简单实现jQuery多选框功能
2017/01/09 Javascript
JS实现图片手风琴效果
2020/04/17 Javascript
JavaScript数据结构与算法之队列原理与用法实例详解
2017/11/22 Javascript
Vue项目中使用Vux的安装过程
2018/05/01 Javascript
JS中min函数实例讲解
2019/02/18 Javascript
Vue 事件处理操作实例详解
2019/03/05 Javascript
Postman环境变量全局变量使用方法详解
2020/08/13 Javascript
vue使用swiper实现左右滑动切换图片
2020/10/16 Javascript
[01:09]DOTA2次级职业联赛 - 99战队宣传片
2014/12/01 DOTA
Python3使用requests发闪存的方法
2016/05/11 Python
python中pylint使用方法(pylint代码检查)
2018/04/06 Python
python 限制函数调用次数的实例讲解
2018/04/21 Python
python读取多层嵌套文件夹中的文件实例
2020/02/27 Python
Jupyter Notebook 文件默认目录的查看以及更改步骤
2020/04/14 Python
.net面试题
2016/09/17 面试题
幼教个人求职信范文
2013/12/02 职场文书
元宵晚会主持词
2014/03/25 职场文书
陈胜吴广起义口号
2014/06/20 职场文书
市场策划求职信
2014/08/07 职场文书
课外访万家心得体会
2014/09/03 职场文书
2014年小学数学教师工作总结
2014/12/03 职场文书
教师创先争优承诺书
2015/04/27 职场文书
辩护词格式
2015/05/22 职场文书
Java实现二维数组和稀疏数组之间的转换
2021/06/27 Java/Android
java解析XML详解
2021/07/09 Java/Android