在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解析xml文件操作实例
Oct 05 Python
跟老齐学Python之变量和参数
Oct 10 Python
利用Python演示数型数据结构的教程
Apr 03 Python
python3爬虫获取html内容及各属性值的方法
Dec 17 Python
使用 Python 处理 JSON 格式的数据
Jul 22 Python
Python笔记之代理模式
Nov 20 Python
python读写Excel表格的实例代码(简单实用)
Dec 19 Python
浅谈tensorflow 中tf.concat()的使用
Feb 07 Python
浅析Python模块之间的相互引用问题
Feb 26 Python
python抢购软件/插件/脚本附完整源码
Mar 04 Python
python的变量和简单数字类型详解
Sep 15 Python
利用Python将list列表写入文件并读取的方法汇总
Mar 25 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中base_convert()进制数字转换函数实例
2014/11/20 PHP
PHP常用的排序和查找算法
2015/08/06 PHP
Yii2主题(Theme)用法详解
2016/07/23 PHP
PHP类型约束用法示例
2016/09/28 PHP
PHP数据库操作二:memcache用法分析
2017/08/16 PHP
javascript 在网页中的运用(asp.net)
2009/11/23 Javascript
JavaScript 对象模型 执行模型
2009/12/06 Javascript
jquery1.4.2 for Visual studio 2010 模板文件
2010/07/14 Javascript
JS获取及设置TextArea或input文本框选择文本位置的方法
2015/03/24 Javascript
深入分析Javascript事件代理
2016/01/30 Javascript
在线引用最新jquery文件的实现方法
2016/08/26 Javascript
vue父子组件的数据传递示例
2017/03/07 Javascript
angularjs中回车键触发某一事件的方法
2017/04/24 Javascript
Vuejs中使用markdown服务器端渲染的示例
2017/11/22 Javascript
vue实现修改图片后实时更新
2019/11/14 Javascript
NodeJS模块Buffer原理及使用方法解析
2020/11/11 NodeJs
[00:32]2018DOTA2亚洲邀请赛OpTic出场
2018/04/03 DOTA
python开发之thread线程基础实例入门
2015/11/11 Python
Python探索之ModelForm代码详解
2017/10/26 Python
python调用c++ ctype list传数组或者返回数组的方法
2019/02/13 Python
关于numpy中eye和identity的区别详解
2019/11/29 Python
Python切割图片成九宫格的示例代码
2020/03/10 Python
Python pip install之SSL异常处理操作
2020/09/03 Python
菲律宾旅游网站:Expedia菲律宾
2017/10/11 全球购物
美国鲍勃商店:Bob’s Stores
2018/07/22 全球购物
蔻驰西班牙官网:COACH西班牙
2019/01/16 全球购物
LG西班牙网上商店:Tienda LG Online Es
2019/07/30 全球购物
大学生优秀团员事迹材料
2014/01/30 职场文书
运动会邀请函范文
2014/02/06 职场文书
《我爱祖国》演讲稿1000字
2014/09/26 职场文书
2016大学生党校学习心得体会
2016/01/06 职场文书
如何利用JavaScript实现二叉搜索树
2021/04/02 Javascript
超详细教你怎么升级Mysql的版本
2021/05/19 MySQL
Opencv实现二维直方图的计算及绘制
2021/07/21 Python
JavaScript中isPrototypeOf函数
2021/11/07 Javascript
关于maven依赖 ${xxx.version}报错问题
2022/01/18 Java/Android